如果我通过一个变量做传递变量到蚂蚁
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构建文件部分,以及在你的构建文件中放入“ 的结果吗? –