0

すべてのプロジェクトで非常によく似た Ant ビルド スクリプトを使用していることに気付いたので、build.xml をテンプレート化することにしました。ただし、IntelliJ IDEA のカスタム テンプレート変数の構文 (テンプレートを選択するときに要求される) は、プロパティにアクセスするための Ant の構文とまったく同じです。

${FULLY_QUALIFIED_CLASS_NAME} <- custom template variable that I leave undefined
${basedir}                    <- provided by Ant

これこれを見て

テンプレートからファイルを生成すると、 の値を要求されると予想していましたFULLY_QUALIFIED_CLASS_NAMEが、実際には と も要求されましbasedirDSTAMP。basedir と DSTAMP の両方を設定する必要があります (basedir はデフォルトで設定され、DSTAMP は TStamp によって設定されます)

のような宣言がないので、これらの2つが選択されているのではないかと思いました

<property name="foo" value="bar"/>

java.homeしかし、宣言を持たないのような他の組み込みプロパティも使用しますが、それらについては尋ねられませんでした。

これを回避し、IntelliJ にこれらのプロパティをそのままにして、Ant がそれらに値を提供するように説得するにはどうすればよいでしょうか?

4

1 に答える 1

0

私が見つけた回避策は、これら 2 つの特定の値をわずかに異なる名前でマスクすることでした。たとえば、私はラインを使用しました

<property name="this.basedir" refid="basedir"/>

<dirname property="this.basedir" file="${ant.file}"/>
<!-- EDIT: for some reason, IntelliJ didn't like me refid'ing basedir.
     This works if ${ant.file} is in the project root. -->

問題の原因となる特定の表記を入力しないようにします。TStamp にプレフィックスを付けて、DSTAMP の名前を変更しました。

<tstamp prefix="this"/>

だから今私は呼び出し${this.basedir}${this.DSTAMP}IntelliJ は満足しています。なぜこれが行われるのか、特にこれらの値についてはまだわかりませんが、それらをマスキングすることは有効な解決策のようです。

于 2013-07-25T04:37:17.230 に答える