我是Ant和XML的新手,我在一个问题上需要一些帮助。
我想创建一个根文件夹,其名称类似于
[数字](时间戳) [some_strings] _etc
我将向您展示我的第一段代码,我只是从文件中读取值。<target name="create">
<loadfile srcfile="new.txt" property="fisier" />
<for param="line" list="${fisier}" delimiter="${line.separator}">
<sequential>
<echo>@{line}</echo>
<propertyregex property="item"
input="${line}"
regexp="regexpToMatchSubstring"
select="1"
casesensitive="false" />
</sequential>
</for>
</target>
从我读取的值,我需要减去一个字符串与regexp。我有类似id=2344的东西,我只需要数字,即等号右边的字符串。我怎么能做到呢?
使用通用编程语言实现这种需求要简单得多。您的示例演示了如何需要ANT -contrib库来提供"for"ANT任务。
下面是使用groovy的另一个实现:
<groovy>
new File("data.txt").eachLine { line ->
def num = line =~ /.*=(d+)/
println num[0][1]
}
</groovy>
<标题> 例子├── build.xml
└── data.txt
执行如下命令
build:
[groovy] 2222
[groovy] 2223
[groovy] 2224
data.txt
id=2222
id=2223
id=2224
build . xml
<project name="demo" default="build">
<available classname="org.codehaus.groovy.ant.Groovy" property="groovy.installed"/>
<target name="install-groovy" unless="groovy.installed">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/groovy.jar" src="http://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-all/2.3.6/groovy-all-2.3.6.jar"/>
<fail message="Groovy installed run the build again"/>
</target>
<target name="build" depends="install-groovy">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
<groovy>
new File("data.txt").eachLine { line ->
def num = line =~ /.*=(d+)/
println num[0][1]
}
</groovy>
</target>
</project>
指出:
- 包含一个额外的目标,用于安装groovy任务所需的jar。使构建更加可移植。