地图字符串列表文件资源集合的dependset [英] Map a list of strings to a collection of file resources for a dependset

查看:94
本文介绍了地图字符串列表文件资源集合的dependset的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

背景:我读了一个XML文件名和想要映射他们的源和目标路径,构建任务。我不是一个有经验的用户蚂蚁,我正在寻找一种方式,那就是

Background: I read names from an XML file and want to map them to source and target paths for a build task. I am not an experienced Ant user and I'm looking for a way to that is


  1. 可读性

  2. 稳健和

  3. 可以用来确定目标是过时(pferably利用蚂蚁蚂蚁或任务的Contrib $ P $)。

示例XML:

<list><value>The first name<value><value>The second name</value></list>

期望中的结果集:

Desired resultset:

${dir}/The first name.${ext}
${dir}/The second name.${ext}

我可以通过建立路径的每个文件 pathconvert mappedresources ,但我一直没能映射无论结果回到文件资源的集合,我可以在 dependset 使用。有一种优雅的解决这个问题?

I can build the path to each file using pathconvert or mappedresources but I haven't been able to map either result back to a collection of file resources that I can use in a dependset. Is there an elegant solution to this problem?

推荐答案

ANT是不是一种编程语言。容易嵌入常规

ANT is not a programming language. Easy to embed groovy.

├── build.xml
├── sample.xml
├── src
│   ├── file1.txt
│   ├── file2.txt
│   └── file3.txt
└── target
    ├── file1.txt
    └── file2.txt

运行如下:

$ ant
Buildfile: /.../build.xml

install-groovy:

build:
     [copy] Copying 2 files to /.../target
     [copy] Copying /.../src/file1.txt to /.../target/file1.txt
     [copy] Copying /.../src/file2.txt to /.../target/file2.txt

BUILD SUCCESSFUL

sample.xml中

<list>
<value>file1</value>
<value>file2</value>
</list>

的build.xml

<project name="demo" default="build">

    <!--
    ================
    Build properties
    ================
    -->
    <property name="src.dir"   location="src"/>
    <property name="src.ext"   value="txt"/>
    <property name="build.dir" location="target"/>

    <available classname="org.codehaus.groovy.ant.Groovy" property="groovy.installed"/> 

    <!--
    ===========
    Build targets
    ===========
    -->    
    <target name="build" depends="install-groovy" description="Build the project">
        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
        <groovy>
        def xmllist = new XmlSlurper().parse(new File("sample.xml"))

        ant.copy(todir:properties["build.dir"], verbose:true, overwrite:true) {
           fileset(dir:properties["src.dir"]) {
              xmllist.value.each {
                include(name:"${it}.${properties["src.ext"]}") 
              }
           }
        }
        </groovy>
    </target>

    <target name="clean" description="Cleanup project workspace">
       <delete dir="${build.dir}"/>
    </target>

    <target name="install-groovy" description="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 has been installed. Run the build again"/>
    </target>

</project>

这篇关于地图字符串列表文件资源集合的dependset的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆