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>