蚂蚁,从一个财产价值到另一个财产价值

时间:2014-03-17 20:59:42

标签: java ant properties reference

我的init目标中有一个任务,它创建一个名为" TODAY" :

<tstamp>
    <format property="TODAY" pattern="kk:mm:ss-MM-dd-yyyy" locale="en,US"/>
</tstamp>

我希望我的构建文件驻留的属性名为&#34; store.dir&#34; :

<property name="store.dir" value="target/${TODAY}"/>

理想情况下,这就是我想要的... store.dir属性引用TODAY属性,这样我就可以通过修改一个属性而不是遍历每个jar任务来重新定位我想要放置包的位置。

这似乎没有工作......回声产生了这个:

 [echo] Making dir : target/${TODAY}

我在这里使用错误的构造吗?如果我将它们分开并将它们放入dir路径/ etc中,它似乎可以很好地解决这些属性(应该如此)。

我的配置的相关部分:

   <property name="store.dir" value="target/${TODAY}"/>
   <target name="init">
          <tstamp>
            <format property="TODAY" pattern="kk:mm:ss-MM-dd-yyyy" locale="en,US"/>
          </tstamp>
        <mkdir dir="bin"/>
        <mkdir dir="doc"/>
        <echo>Making dir : ${store.dir}</echo>
        <mkdir dir="${store.dir}"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="JUnit">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>

1 个答案:

答案 0 :(得分:1)

作品:

<project>
  <tstamp>
      <format property="TODAY" pattern="kk:mm:ss-MM-dd-yyyy" locale="en,US"/>
  </tstamp>

  <property name="store.dir" value="target/${TODAY}"/>

  <echo>$${store.dir} => ${store.dir}</echo>
</project>

输出:

[echo] ${store.dir} => target/22:13:07-03-17-2014

也许想要使用属性store.dir的目标在其依赖链中没有init目标?

- 评论后编辑和编辑原始问题
正如他在评论中已经提到的那样,你在调用tstamp任务之前就发生了store.dir的属性声明,而这个任务无法正常工作。修复它:

<target name="init">
 <tstamp>
  <format property="TODAY" pattern="kk:mm:ss-MM-dd-yyyy" locale="en,US"/>
 </tstamp>
 <property name="store.dir" value="target/${TODAY}"/>
...
</target>