次のようにして変数をantに渡すと
ant -Dsomething=blah
build.xml で参照するにはどうすればよいですか? @something@と${something}を試しましたが、どちらもうまくいかないようです。
最終的に私がやろうとしているのは、コンパイル時にいくつかのプロパティ (バージョン) を設定することです。
更新:もちろん、問題は別の場所にあることが判明しました-例を使用して最も完全に見える答えを受け入れます
次のようにして変数をantに渡すと
ant -Dsomething=blah
build.xml で参照するにはどうすればよいですか? @something@と${something}を試しましたが、どちらもうまくいかないようです。
最終的に私がやろうとしているのは、コンパイル時にいくつかのプロパティ (バージョン) を設定することです。
更新:もちろん、問題は別の場所にあることが判明しました-例を使用して最も完全に見える答えを受け入れます
これらのことを考えすぎると、嫌いではありませんか?
<project name="test">
<echo message="The value of foo is ${foo}"/>
</project>
それでは、プログラムを実行します。foo
myでプロパティの値を定義していないことに注意してくださいbuild.xml
。代わりに、コマンド ラインから取得します。
$ ant -Dfoo=BAR_BAR_FOO
test:
[echo] The value of foo is BAR_BAR_FOO
BUILD SUCCESSFUL
time: 0 seconds
見る。特別なことは何もありません。コマンド ラインで設定したプロパティは、通常のプロパティと同様に扱います。
ここからが楽しみです。今回はプロパティfoo
を定義したことに注意してください。build.xml
<project name="test">
<property name="foo" value="barfu"/>
<echo message="The value of foo is ${foo}"/>
</project>
さあ、楽しみを見てください:
$ ant
test:
[echo] The value of foo is barfu
BUILD SUCCESSFUL
time: 0 seconds
foo
次に、コマンド ラインでプロパティを設定します。
$ ant -Dfoo=BAR_BAR_FOO
test:
[echo] The value of foo is BAR_BAR_FOO
BUILD SUCCESSFUL
time: 0 seconds
コマンドラインがbuild.xml
ファイル自体に設定した値を上書きすることを確認してください。このようにして、コマンド ライン パラメータで上書きできるデフォルトを設定できます。
次のようなことをしたいようです。
<mkdir dir="build/src"/>
<copy todir="build/src" overwrite="true">
<fileset dir="src" includes="**/*.java"/>
<filterset>
<filter token="VERSION" value="${version}"/>
</filterset>
</copy>
...これにより、ソースがコピーされ、置き換えられます@VERSION@
:
public class a { public static final String VERSION = "@VERSION@"; }
...そしてbuild/src
あなたのjavac
srcに含めます。
とはいえ、ソースコピーの手順には費用がかかり、間違いなく混乱を招くため、このアプローチはお勧めしません。以前は、version.propertiesファイルをパッケージに。で保存していましたversion=x.y
。私のJavaコードでは、とを使用Class.getResourceAsStream("version.properties")
しjava.util.Properties
ました。私のbuild.xmlでは、を<property file="my/pkg/version.properties"/>
作成できるように使用しましたoutput-${version}.jar
。
${argsOne}
私のために動作し、呼び出しコマンドが
ant -DargsOne=cmd_line_argument
Antのドキュメントにもそう書かれています。これは機能するはずです。で実行してant -debug
、出力を貼り付けてみてください。