2009-12-30 63 views

回答

7

可以使用pathconvert任務來代替「」與「_」並分配到一個新的屬性:

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
    <property name="app.version" value="1.2.0"/> 

    <pathconvert property="app.version.underscore" dirsep="" pathsep="" description="Replace '.' with '_' and assign value to new property"> 
     <path path="${app.version}" description="Original app version with dot notation" /> 

     <!--Pathconvert will try to add the root directory to the "path", so replace with empty string --> 
     <map from="${basedir}" to="" /> 

     <filtermapper> 
      <replacestring from="." to="_"/>  
     </filtermapper> 

    </pathconvert> 

    <echo>${app.version} converted to ${app.version.underscore}</echo> 
</project> 
0

有可能使用zip任務

<zip zipfile="something-ver-${app.version}.zip"> 
<fileset basedir="${bin.dir}" prefix="bin"> 
    <include name="**/*" /> 
</fileset> 
<fileset basedir="${doc.dir}" prefix="doc"> 
    <include name="**/*" /> 
</fileset></zip> 

有關拉鍊任務的詳細信息:http://ant.apache.org/manual/Tasks/zip.html

+0

這將得到「something-ver-1.2.0.zip」,我需要接收「something-ver-1_2_0.zip」。也許,這是不可能的? :) – Shark 2009-12-30 07:32:14

0

由於物業app.version總是在變化我假設你不想硬編碼到屬性文件中,而是在構建時傳遞它。除此answer之外,您可以在命令行上嘗試以下操作:

ant -f build.xml -Dapp.version=1.2.0 

app.version更改爲需要的那個。

編輯:

更好地理解從反饋你的問題。 Unfortunately螞蟻沒有字符串操作任務,你需要寫你自己task爲此。這是一個關閉example

+0

謝謝。這就是我需要的。有點亂,但工作:) – Shark 2009-12-30 08:03:28

+0

pathconvert可以用來在ANT中執行字符串操作。 'mapper的還包括對正則表達式的支持。 – 2009-12-30 19:24:50

2

另一種方法是filter從文件中使用正則表達式的屬性的版本號,在這個例子中建議:

<loadfile srcfile="${main.path}/Main.java" property="version"> 
    <filterchain> 
     <linecontainsregexp> 
      <regexp pattern='^.*String VERSION = ".*";.*$'/> 
     </linecontainsregexp> 
     <tokenfilter> 
      <replaceregex pattern='^.*String VERSION = "(.*)";.*$' replace='\1'/> 
     </tokenfilter> 
     <striplinebreaks/> 
    </filterchain> 
</loadfile> 
相關問題