生成逗号分隔的 ist



我正在尝试创建一个构建脚本,该脚本将调用将用于创建多个项目的外部应用程序。运行外部应用时,可能需要向其传递一些外部库。问题是对于每个项目,我都不知道需要哪些库(如果有的话)。

因此,为了实现这一目标,我认为最好的方法如下:

1) 为每个项目创建一个 lib.property 文件,其中包含外部库的列表。即 LIB1=xxx LIB2=CCC LIB3=yyy

2) 让我的构建脚本"读取"属性文件以确定外部库,然后将其与外部库引用一起构建到外部应用程序的 exec 命令行中。即 myApp -lib1,lib2,lib3

这是一种明智/可行的方法吗?我正在尝试在这里写它,但如果 ANT 中有更好的方法,我将不胜感激任何建议?

这是我到目前为止写的

<target name="info">
<echo>Reading lib file</echo>
<property file="lib.properties" prefix="x"/>
<propertyselector property="propertyList" delimiter="," match="LIB[0-9]" select="" />
<echo> List LIBS in loop</echo>
<for list="${propertyList}" param="sequence">
<sequential>
<echo>${x.@{sequence}}</echo>
</sequential>
</for>
</target>

使用 var 任务

<project name="MyProject" default="info" basedir=".">
    <target name="info">
        <taskdef resource="net/sf/antcontrib/antcontrib.properties">
            <classpath>
                <pathelement location="${basedir}/ant-contrib-0.6.jar"/>
            </classpath>
        </taskdef>
        <echo>Reading lib file</echo>
        <property file="lib.properties" prefix="x"/>
        <propertyselector property="propertyList" delimiter="," match="LIB[0-9]" select="" />
        <echo> List LIBS in loop</echo>
        <var name="x" value=""/>
        <for list="${propertyList}" param="sequence">
            <sequential>
                <echo>${x.@{sequence}}</echo>
                <var name="x" value="${x.@{sequence}},${x}"/>
            </sequential>
        </for>
        <var name="x" value="-${x}"/>
        <echo>Final: ${x}</echo>
    </target>
</project>

但是它并不完美:

 info:
 [echo] Reading lib file
 [echo]  List LIBS in loop
 [echo] yyy
 [echo] ccc
 [echo] xxx
 [echo] Final: -xxx,ccc,yyy,

相关内容

  • 没有找到相关文章

最新更新