2009-12-30 62 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> 
相关问题