位置

时间:2016-06-17 09:37:27

标签: ant

我需要通过长度f.e从属性值中提取子字符串。 :

<property name="prop1" value="nameBLABLABLA" />

我想得到值

name

是否可以不使用javascript代码?

2 个答案:

答案 0 :(得分:2)

与vanilla ant不同,您需要添加一些Ant插件,例如
Antcontrib(2006年最新版本!)或Ant Flaka - 意味着您需要额外的jar /库。
使用jdk内置的Javascript引擎,它很简单:

<project>

<!-- create a macrodef for reuse -->
<macrodef name="getsubstring">
 <attribute name="src"/>
 <attribute name="from"/>
 <attribute name="to"/>
 <attribute name="result"/>
 <sequential>
  <script language="javascript">
   project.setProperty(
    "@{result}", "@{src}".substring(@{from},@{to})
    );
  </script>
 </sequential>
</macrodef>

<property name="foo" value="nameBLABLABLA"/>

<getsubstring src="${foo}" from="0" to="4" result="foobar"/>

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

</project>

不需要额外的图书馆 创建了一个macrodef,它通常分别用于字符串的属性 JavaScript引擎了解Javascript和Java,您将获得对Ant api的完全访问权。

答案 1 :(得分:1)

我在Rebse的回答中使用JavaScript,但有一种方法可以在没有使用<loadresource><tokenfilter>的情况下执行此操作。这使用了开始/长度而不是from / to for substring:

/