【问题标题】:Set Ant project name设置 Ant 项目名称
【发布时间】:2014-09-01 23:11:04
【问题描述】:

我正在尝试在项目声明后更改 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>

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

谢谢!

【问题讨论】:

    标签: ant properties-file


    【解决方案1】:

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

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

    在您的情况下,&lt;echo&gt;${ant.project.name}&lt;/echo&gt; 会回显 ${ant.project.name},
    因为未设置属性,因此您可以在脚本中使用属性任务创建它:
    &lt;property name="ant.project.name" value="whatever"/&gt;.
    但是使用通常的属性名用于“ant internals”似乎不是最佳选择。

    如果在项目标签中设置了属性,则可以使用内置的 javascript 引擎和 ant api、fe 通过 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) 而不是 @987654331 @。用户属性是通过 -Dkey=value 命令行参数定义的属性,享有特殊保护。

    Ant还提供了一堆builtin properties

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 2014-09-26
      • 2018-07-05
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多