如果我通過一個變量做傳遞變量到螞蟻
ant -Dsomething=blah
我怎麼可以參考它在我的build.xml螞蟻?我嘗試了@ something @和$ {something}但似乎都不起作用。
最終我想要做的是在編譯時設置一些屬性(版本)。
更新:當然,問題竟然是別的地方 - 接受與實例
如果我通過一個變量做傳遞變量到螞蟻
ant -Dsomething=blah
我怎麼可以參考它在我的build.xml螞蟻?我嘗試了@ something @和$ {something}但似乎都不起作用。
最終我想要做的是在編譯時設置一些屬性(版本)。
更新:當然,問題竟然是別的地方 - 接受與實例
難道你不恨它,當你在想這些事情:
<project name="test">
<echo message="The value of foo is ${foo}"/>
</project>
現在,我將運行我的程序。請注意,我從未在我的build.xml
中爲屬性foo
定義了一個值。相反,我會從命令行得到它:
$ 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>
...這將導致您的源被複制,替換@[email protected]
:
public class a { public static final String VERSION = "@[email protected]"; }
..然後在您的javac
src中包含build/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 documentation也這麼說很容易引用。這應該工作,嘗試使用ant -debug
運行並粘貼輸出。
$ {something}應該可以正常工作。你可以發佈你指向變量的Ant構建文件部分,以及在你的構建文件中放入「 的結果嗎? –