我需要提取由'分隔的代币:'从字符串./src:./.apt_generated:
中获取单个标记作为列表元素。我尝试使用this示例中的概念如下(使用dirsep,filesep等尝试了一些变体)。这些都没有奏效。如何从ANT中的给定字符串中获取所需的列表?我不能使用ant-contib或任何其他ant库。我只需要使用核心ANT。
<pathconvert property="dir.1" >
<path path="${srcdir.list}"/>
<chainedmapper>
<flattenmapper/>
<mapper type="regexp" from="(.*?):.*" to="\1"/>
</chainedmapper>
</pathconvert>
<echo>dir.1 is ${dir.1}</echo>
答案 0 :(得分:2)
您可以使用脚本任务
<project name="proj">
<property name="dir.list" value="./src:./.apt_generated:"/>
<script language="javascript"> <![CDATA[
var values = proj.getProperty("dir.list").split(":");
proj.setProperty("dir.1", values[0]);
proj.setProperty("dir.2", values[1]);
]]></script>
<echo message="${dir.1}" />
<echo message="${dir.2}" />
</project>
EDIT。我无法准确说出为什么映射器不起作用。我认为这不仅仅是一个简单的正则表达式替换,但它有一些逻辑用于路径处理。
尝试以下
<project name="proj">
<pathconvert property="dir.1" >
<path path="./src:./.apt_generated:"/>
<chainedmapper>
<flattenmapper/>
<identitymapper/>
</chainedmapper>
</pathconvert>
<echo>dir.1 is ${dir.1}</echo>
</project>
你看到它从字符串中删除了一些字符,即使它是身份映射器。