Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Ant propertyfile项未解析为其值_Ant - Fatal编程技术网

Ant propertyfile项未解析为其值

Ant propertyfile项未解析为其值,ant,Ant,我在属性文件中有一个值,我想在构建运行时增加该值。目标是复制一组文件,并在每个文件的前面附加一个数字,以保持将文件复制到目录中的顺序。我使用的任务如下: <propertyfile file="jsfiles.properties"> <entry key="file.number" type="int" operation="=" value="10" /> <entry key="file.number" type="int" default

我在属性文件中有一个值,我想在构建运行时增加该值。目标是复制一组文件,并在每个文件的前面附加一个数字,以保持将文件复制到目录中的顺序。我使用的任务如下:

<propertyfile file="jsfiles.properties">
    <entry  key="file.number" type="int" operation="=" value="10" />
    <entry  key="file.number" type="int" default="010" operation="+" value="10" pattern="000" />
</propertyfile>
然后我复制:

<copy todir="${js-in.dir}">
    <resources>
        ...
    </resources>
    <chainedmapper>
        <flattenmapper />
        <globmapper from="*.js" to="${file.number}-*.js"/>
    </chainedmapper>
</copy>
这正是我所需要的,除了以下输出:

010-file1.js 020-file2.js 030-file3.js ... 我得到:

${file.number}-file1.js ${file.number}-file2.js ${file.number}-file3.js ... 我做错了什么

更新:根据以下答案之一,一个更简单的案例:

<propertyfile file="jsfiles.properties">
    <entry  key="file.number" type="int" operation="=" value="10" />
    <entry  key="file.number" type="int" default="0010" operation="+" value="10" pattern="0000" />

</propertyfile>

<target name="concat">
    <echo>${file.number}</echo>
</target>

打印[echo]${file.number}

您可以通过调用propertyfile和

更新

划掉上面的答案。 如果在更新后执行${file.number},它将显示为${file.number},而不是值。这是需要解决的问题

你的配置和我的不同之处在于,在第2行和第2行之后有一个换行符。我在后面添加了一个额外的空行,${file.number}现在可以正确显示

<entry key="file.number" type="int" default="010" value="010" operation="+" pattern="000" /> 

</propertyfile>

用于递增属性文件中的值。我不知道这是否与你的问题有关。您应该能够在${basedir}中找到磁盘上的jsfiles.properties

获取${file.number}-file1.js的原因是在propertyfile上下文之外没有具有该名称的变量

我试过这个:

<target name="copy">
  <property name="indexStart" value="10"/>      
  <echo message="About to copy file from ${basedir}" /> 
  <copy todir="tmp" overwrite="true">
    <fileset dir="${basedir}" includes="*.js" />            
    <scriptmapper language="javascript">
      var i = parseInt(project.getProperty('indexStart'));          
      self.addMappedName(i+'_'+source);                 
      project.setProperty('indexStart', i+10);              
    </scriptmapper>         
  </copy>   
</target>
…这是一种工作方式。由于某些原因,增量执行的次数太多,但至少您应该能够按照复制的顺序对文件进行排序。

我发现任务本身并不加载属性值,它只是编辑指定的属性文件。 要加载属性值,请使用任务:
因此,在加载值之后添加这一行

是说尝试使用不在我的属性文件中的条目吗?或者您想让我将file.number重命名为build.number?我尝试了您的确切示例,奇怪的是,只有当file.number重命名为build.numberI时,它才起作用。我仍然得到${build.number}-file1.js等。不幸的是,这不允许格式化。但是我试着在标记前添加一行新行,只是回显变量。我仍然看到${file.number}。我将在原始问题中包含代码是的,奇怪的是,前几个数字被跳过了。文件从40、50、60开始计数,。。。。但这似乎确实有效。谢谢
<propertyfile file="jsfiles.properties">
  <entry  key="file.number" type="int" operation="=" value="10" />
  <entry  key="file.number" type="int" default="010" operation="+" value="10" pattern="000" />
</propertyfile>
<target name="copy">
  <property name="indexStart" value="10"/>      
  <echo message="About to copy file from ${basedir}" /> 
  <copy todir="tmp" overwrite="true">
    <fileset dir="${basedir}" includes="*.js" />            
    <scriptmapper language="javascript">
      var i = parseInt(project.getProperty('indexStart'));          
      self.addMappedName(i+'_'+source);                 
      project.setProperty('indexStart', i+10);              
    </scriptmapper>         
  </copy>   
</target>