将变量传递给ant

nau*_*cho 2 ant

如果我通过将变量传递给ant

ant -Dsomething=blah
Run Code Online (Sandbox Code Playgroud)

如何在build.xml中引用它?我尝试了@ something @$ {something},但似乎都没有用。

最终,我想做的是在编译时设置一些属性(版本)。

更新:当然,问题出在其他地方-接受最完整的示例答案

Dav*_* W. 5

当您考虑以下这些内容时,您是否不讨厌它:

<project name="test">
    <echo message="The value of foo is ${foo}"/>
</project>
Run Code Online (Sandbox Code Playgroud)

现在,我将运行程序。请注意,我从来没有定义属性的值foo在我的build.xml。相反,我将从命令行获取它:

$ ant -Dfoo=BAR_BAR_FOO

test:
     [echo] The value of foo is BAR_BAR_FOO

BUILD SUCCESSFUL
 time: 0 seconds
Run Code Online (Sandbox Code Playgroud)

看到。没什么特别的。您可以像对待常规属性一样对待在命令行上设置的属性。

这就是有趣的地方。请注意,foobuild.xml这次已经定义了该属性:

<project name="test">
     <property name="foo" value="barfu"/>
     <echo message="The value of foo is ${foo}"/>
</project>
Run Code Online (Sandbox Code Playgroud)

现在观看乐趣:

$ ant
test:
     [echo] The value of foo is barfu

BUILD SUCCESSFUL
 time: 0 seconds
Run Code Online (Sandbox Code Playgroud)

现在,我们将foo在命令行上设置属性:

$ ant -Dfoo=BAR_BAR_FOO
test:
     [echo] The value of foo is BAR_BAR_FOO

BUILD SUCCESSFUL
 time: 0 seconds
Run Code Online (Sandbox Code Playgroud)

看到命令行覆盖了我在build.xml文件本身中设置的值。这样,您可以拥有可以被命令行参数覆盖的默认值。