我在属性文件中有一个值,我想在构建运行时增加它。目标是复制一组文件并在每个文件的前面附加一个数字,以便维护它们被复制到目录中的顺序。我正在使用<propertyfile>
任务,如下所示:
<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>
这正是我所需要的,除了以下输出之外:
我明白了:
我做错了什么?
更新:根据以下其中一个答案,更简单的案例:
<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}
答案 0 :(得分:4)
我发现<propertyfile>
任务本身不加载属性值,只是编辑指定的属性文件。
要加载属性值,请使用<property>
任务:
<property file="jsfiles.properties" />
因此,在</propertyfile>
之后添加此行以加载值
答案 1 :(得分:1)
<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>
用于递增属性文件中的值。我不知道这是否与你的问题有关。您应该能够在$ {basedir}
中的磁盘上找到jsfiles.properties你得到$ {file.number} -file1.js的原因是因为在属性文件上下文之外有没有该名称的变量。
我试过了:
<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>
..它有点工作。由于某种原因,增量执行次数过多,但至少您应该能够按照复制的顺序对文件进行排序。
答案 2 :(得分:0)
您可以通过调用build.number
和
propertyfile
进行测试
<globmapper from="*.js" to="${build.number}-*.js"/>
<强>更新强>
抓住上面的答案。
如果您在更新<echo>${file.number}</echo>
后执行<propertyfile>
,则会显示为$ {file.number},而不是值。这是需要解决的问题。
您的配置和我的差异是在第二个和</propertyfile>
之后的换行符。我在<entry>
之后添加了一个空白行,现在<echo>${file.number}</echo>
正确显示。
<entry key="file.number" type="int" default="010" value="010" operation="+" pattern="000" />
</propertyfile>