2010-06-11 22 views
2

我在構建運行時想要增加的屬性文件中有一個值。我們的目標是複製一組文件並在每個文件的前面添加一個數字,以便維護它們被複制到目錄中的順序。我現在用的是<propertyfile>任務如下:Ant屬性文件條目未解析爲其值

<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
  • $ {文件。數} -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}

回答

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的原因是因爲在propertyfile上下文之外有該名稱的noe變量。

我嘗試這樣做:

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

..和它種工作。出於某種原因,增量執行的次數太多,但至少您應該能夠按照複製的順序對文件進行排序。

+0

中包含代碼是的,跳過前幾個數字是奇怪的(文件從40,50,60 ......開始計數)。但這似乎工作。謝謝! – Brian 2010-06-15 13:43:35

0

可以通過調用計數器build.numberpropertyfile

<globmapper from="*.js" to="${build.number}-*.js"/> 
測試

UPDATE

劃傷以上答案。 如果您在更新<propertyfile>後執行<echo>${file.number}</echo>,它將顯示爲$ {file.number}而不是值。這是需要解決的問題。

您的配置和我的區別是換行後第二和</propertyfile>。我在<entry><echo>${file.number}</echo>現在正確顯示後添加了一條額外的空行。

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

</propertyfile> 
+0

是說有,是不是在我的屬性文件中的條目試試?或者你想讓我重命名file.number build.number? – Brian 2010-06-14 14:12:59

+0

我試過你的確切例子,它奇怪的是工作只有當file.number被重命名爲build.number – JoseK 2010-06-14 15:27:36

+0

我仍然得到$ {build.number} -file1.js等 – Brian 2010-06-14 21:05:35

3

我發現<propertyfile>任務本身並不加載屬性值,它只是編輯指定的屬性文件。
要加載的屬性值使用<property>任務:
<property file="jsfiles.properties" />
所以才</propertyfile>後加入這一行的負載值

+0

這是最好的答案!標記這一個是正確的。 – 2016-03-11 08:49:15