我试图在项目声明之后更改ant.project.name属性。我知道这是不可取的,但这是我解决我的项目的一个大问题的唯一方法。我发现了一些有趣的帖子,比如这个:
Ant -如何将${ant.project.name}设置为项目文件夹名?
而不是使用:
<project basedir="." default="package">
<basename property="ant.project.name"
file="${basedir}"/>
</project>我想直接使用“ant.project.name”而不是属性"file“来设置该文件。你有什么想法或建议吗?还是另一种方式?
谢谢!
发布于 2014-07-11 11:53:01
正如其他人已经提到的,不建议更改标准ant属性的值。
此外,属性一旦设置,蚂蚁的设计是不变的,并有很好的理由。
重写属性应该明智地使用,而且很少使用。
属性ant.project.name通常是通过项目的名称属性设置的。
=> <project name="whatever">,但这不是强制性的,意思是
<project> ... </project>足以使您的xml成为有效的antscript。
在你的例子中,<echo>${ant.project.name}</echo>会回显${ant.project.name},
由于未设置属性,因此您可以在脚本中使用属性任务创建它:
<property name="ant.project.name" value="whatever"/>。
但是使用通常用于'ant is‘的属性名称似乎不是最好的选择。
如果在项目标记中设置了属性,则可以使用内置javascript引擎和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>产出:
[echo] 1. ${ant.project.name} => foo
[echo] 2. ${ant.project.name} => foobar注意: as ant.project.name不是“普通”属性(通过ant中的属性任务声明的属性),您必须使用project.setUserProperty(String, String)方法而不是project.setProperty(String, String)。Userproperties是通过-Dkey=value命令行参数定义的属性,并享有特殊的保护。
Ant还提供了一堆内建特性
https://stackoverflow.com/questions/24695815
复制相似问题