2014-10-06 128 views
0

诚实。 ANT对我来说是新的。拆分和修剪蚂蚁?

我有一个字符串。

我需要使用该字符串,可以说(A; B; C),作为

甲 乙 Ç

但我也通过这些值需要循环,并将它们传递到另一蚂蚁目标!在串

环为阿 然后B和最后对C

数值是随机的也。 我搜索了网络,发现它很容易与ant-contrib。

但像往常一样,我不能使用ant-contrib由于其他人的某些原因。

任何帮助将不胜感激

感谢

回答

2

使用script task,带有内置的JavaScript引擎(因为Java的06年6月1日包括在内,因此不需要额外的库或蚂蚁插件) 全面进入蚂蚁的API。这里是一个非常简单的代码片段:

<project> 

<property name="foo" value="A;B;C"/> 

<script language="javascript"> 
    <![CDATA[ 
    // a simple String replace action 
    var clean = project.getProperty('foo').replace(';', ' '); 
    println(clean); 

    // create a property for further processing in the buildscript 
    project.setProperty('foobar', project.getProperty('foo').replace(';', ' ')); 

    // for loop 
    var items = project.getProperty('foo').split(';'); 
    for (var i = 0; i < items.length; i++) { 
    println(items[i]); 
    } 
    ]]> 
</script> 

<echo> $${foobar} => ${foobar}</echo> 

</project> 

输出:

[script] A B C 
[script] A 
[script] B 
[script] C 
[echo] ${foobar} => A B C 

重复使用包装您的脚本在macrodef。评论后

- 编辑 -
它可以使用echo task编程方式调用Ant任务,一些示例:

<project> 

<property name="foo" value="A;B;C"/> 

<script language="javascript"> 
    <![CDATA[ 
    // for loop 
    var items = project.getProperty('foo').split(';'); 
    for (var i = 0; i < items.length; i++) { 
    print = project.createTask("echo"); 
    print.addText(items[i]); 
    print.execute(); 
    } 
    ]]> 
</script> 

</project> 

输出:

[echo] A 
[echo] B 
[echo] C 
+0

嗨@Rebse,它工作得很顺利。只是我想知道的一件事是否可以调用目标并传递值而不是println(items [i]) - >是否有可能? – 2014-10-06 11:58:32

+0

不可能...检查它.. – 2014-10-06 12:11:08

+0

感谢您的回复Rebse ...但没有时间来实现这一点...现在...再次感谢你 – 2014-10-09 12:00:53

0

你可以使用antcontrib:

<antcontrib:propertyregex property="trimmedprop" 
    input="${untrimmedprop}" 
    defaultValue="${untrimmedprop}" 
    regexp="\s" 
    replace="" 
    global="true" /> 

分裂,我猜你会使用 “for” 循环,你可以做到这一点与antcontrib也:

<project default="test" xmlns:antcontrib="antlib:net.sf.antcontrib"> 
    <typedef resource="net/sf/antcontrib/antlib.xml" uri="antlib:net.sf.antcontrib" classpath="/local/path/to/ant-contrib-1.0b3.jar" /> 

<property name="letters" value="a,b,c,d,e"/> 

<antcontrib:for list="${letters}" param="letter"> 
    <echo>Letter ${letter}</echo> 
</antcontrib:for> 

要在项目中得到antcontrib