有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaAnt,从一个属性值引用到另一个属性值

我在init目标中有一个任务,它创建了一个名为“TODAY”的属性:

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

以及一个名为“store.dir”的属性,用于我希望生成的文件驻留的位置:

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

这正是我想要的。。。商店。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) 个答案

  1. # 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
    

    也许目标是要使用属性存储。dir的依赖链中没有init目标

    评论后编辑并编辑原始问题
    正如fge在他的评论中已经提到的,您的商店财产声明。dir发生在调用无法工作的tstamp任务之前。这样解决:

    <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>