蚂蚁的分裂和修剪



诚实。ANT对我来说是新事物。

我有一根绳子。

我需要使用这个字符串,比方说(A;B;C;),作为

ABC

但我也需要循环这些值,并将它们传递给另一个蚂蚁目标!

A的环路然后是B,最后是C

字符串中的值的数量也是随机的。我搜索了一下网络,发现它很容易与ant contrib联系在一起。

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

如有任何帮助,将不胜感激

感谢

将脚本任务与内置的javascript引擎一起使用(自Java 1.6.06以来就包含在内,因此不需要额外的库或ant插件)以及对ant 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中

-评论后编辑
可以通过编程方式调用ant任务,例如使用echo任务:

<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

您可以使用antcontrib:

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

对于拆分,我猜你将使用"For"循环,你也可以使用antcontrib:

 <property name="letters" value="a,b,c,d,e"/>
 <antcontrib:for list="${letters}" param="letter">
  <echo>Letter ${letter}</echo>
 </antcontrib: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" />

相关内容

  • 没有找到相关文章

最新更新