设置Ant项目名称

时间:2014-07-11 10:40:32

标签: ant properties-file

我试图在项目声明后更改ant.project.name属性。我知道这不可取,但这是我解决项目大问题的唯一方法。 我发现了一些像这样的有趣帖子:

Ant - How to set ${ant.project.name} to project folder name?

而不是使用:

<project basedir="." default="package">
    <basename property="ant.project.name"
        file="${basedir}"/>
</project>

我想使用“value”而不是属性“file”直接设置ant.project.name。 你有什么想法或建议吗?或者替代方式?

谢谢!

1 个答案:

答案 0 :(得分:2)

正如其他人已经提到的那样,不建议更改标准ant属性的值 此外,设置的属性在设计中也是不可变的,并且有充分的理由。
应该明智地使用覆盖属性,很少使用。

ant.project.name属性通常通过项目的名称属性设置
=&gt; <project name="whatever">但它不是强制性的,意味着<project> ... </project>足以使您的xml成为有效的antscript。

在您的情况下,<echo>${ant.project.name}</echo>会回显${ant.project.name},因为未设置属性,因此您可以在脚本中使用属性任务创建它:
<property name="ant.project.name" value="whatever"/>如果在项目标签内设置了属性,则可以使用内置的javascript引擎和ant api,f.e.通过script task覆盖该值。 :

<project name="foo">

 <property name="bla" value="foobar"/>

 <echo>1. $${ant.project.name} => ${ant.project.name}</echo>

 <script language="javascript">
  project.setUserProperty('ant.project.name', project.getProperty('bla'));
 </script>

 <echo>2. $${ant.project.name} => ${ant.project.name}</echo>

</project>

输出:

[echo] 1. ${ant.project.name} => foo   
[echo] 2. ${ant.project.name} => foobar

注意:因为ant.project.name不是'普通'属性(通过ant脚本中的属性任务声明的那些属性),你必须使用方法project.setUserProperty(String, String)而不是project.setProperty(String, String)。 Userproperties是通过-Dkey = value命令行参数定义的属性,享受特殊保护。

Ant还提供了一堆builtin properties