设置Ant项目名称

设置Ant项目名称,ant,properties-file,Ant,Properties File,我正在尝试在项目声明之后更改ant.project.name属性。我知道这是不可取的,但这是唯一的方法,我可以解决一个大问题,我的项目。 我发现了一些像这样有趣的帖子: 而不是使用: <project basedir="." default="package"> <basename property="ant.project.name" file="${basedir}"/> </project> 我希望使用“值”而不是属性“文

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

而不是使用:

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

我希望使用“值”而不是属性“文件”直接设置ant.project.name。 你有什么想法或建议吗?还是其他方式


谢谢大家!

正如其他人已经提到的,不建议更改标准ant属性的值。
此外,属性一旦设置,在ant中是不可变的,这是有充分理由的。
重写属性应该明智地使用,而且很少使用。

属性ant.project.name通常通过project的name属性设置
=>
但它不是强制性的,意思是
足以使xml成为有效的antscript。

在您的情况下,
${ant.project.name}
会回显
${ant.project.name}

因为没有设置属性,所以您可以在脚本中使用属性任务创建它:

但是使用通常用于“ant内部”的属性名称似乎不是最佳选择。

如果在项目标记中设置了属性,则可以通过使用内置javascript引擎和ant api覆盖该值,f.e.:

<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>
注意:由于ant.project.name不是“普通”属性(那些通过ant脚本中的属性任务声明的属性),您必须使用方法
project.setUserProperty(String,String)
而不是
project.setProperty(String,String)
。Userproperties是通过-Dkey=value命令行参数定义的属性,并享受特殊保护

Ant还提供了一系列

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