Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ant,从一个属性值指向另一个属性值_Java_Ant_Properties_Reference - Fatal编程技术网

Java ant,从一个属性值指向另一个属性值

Java ant,从一个属性值指向另一个属性值,java,ant,properties,reference,Java,Ant,Properties,Reference,我在init目标中有一个任务,它创建了一个名为“TODAY”的属性: 我只是使用了错误的构造吗?如果我将它们分开并放入dir路径/etc中,似乎可以很好地解析属性(应该是这样的) 我的配置的整个相关部分: <property name="store.dir" value="target/${TODAY}"/> <target name="init"> <tstamp> <format propert

我在init目标中有一个任务,它创建了一个名为“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>

生成目录:${store.dir}
有效:

<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>
可能想要使用属性store.dir的目标在其依赖链中没有init目标?

--在评论和编辑原始问题之后进行编辑--
正如fge在他的评论中已经提到的,store.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>

...

这两行是在同一个文件中吗?是的,它们是,我已经用构建xmlUuh的相关部分更新了OP,您的
store.dir
是在今天
之后声明的
。。。我相信你的问题就在这里嗯,我实际上把echo任务放在了tstamp任务之后。。。我将用我的整个init目标更新主帖子
   <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>
<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
<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>