具有多个映射的蚂蚁路径转换任务



我有一个要求,我必须将驻留在 C:\temp\java\com\abc\def\xyz 目录下的 Java 类转换为 com.abc.def.xyz。ClassNameWithoutDOTClass] 在 ANT 脚本中。

我在蚂蚁中写了以下内容;

<property name="build.ws.java.dir" value="C:tempjava" />
<for param="wsClass" >
    <path>
        <fileset dir="${build.ws.java.dir}" includes="**${file.separator}**WS.class" />
    </path>
    <sequential>
        <path id="java.ws.class" >
            <fileset file="@{wsClass}" />
        </path>
        <echo message="Actual wsClass = ${toString:java.ws.class}" />
        <pathconvert property="trimmed.wsClass" refid="java.ws.class" >
            <map from="${build.ws.java.dir}${file.separator}" to="" />
            <map from=".class" to="" />
            <map from="${file.separator}" to="." />
        </pathconvert>
        <echo message="Trimmed wsClass = ${trimmed.wsClass}" />
    </sequential>
</for>      

它应该有效,但我得到以下结果(这是不正确的);

 [echo] Actual wsClass = C:tempjavacomabcdefxyzDummyServiceWS.class
 [echo] Trimmed wsClass = comabcdefxyzDummyServiceWS.class

我期待像'com.abc.def.xyz.DummyServiceWS'这样的东西。谁能指出我错过了什么?

谢谢

--

斯朱内霍

实际上,

我已经通过使用高级映射器选项找到了一种方法,在这种情况下,我使用了[packagemapper]。所以我更新的脚本就像;

<pathconvert property="trimmed.wsClass" refid="java.ws.class" >
    <packagemapper from="${build.ws.java.dir}${file.separator}*.class" to="*"/>
</pathconvert>

以上返回正确的值如下;

[echo] Actual wsClass = C:tempjavacomabcdefxyzDummyServiceWS.class
[echo] Trimmed wsClass = com.abc.def.xyz.DummyServiceWS

希望这有帮助,

--

斯朱内霍

引用路径转换手册:

注: 地图元素将按指定的顺序应用,并且仅应用第一个匹配的地图元素。因此,映射元素的顺序可能很重要,如果有 from 值是其他 from 值的前缀。

这意味着由于第一个映射匹配,其他映射将被忽略。 您需要指定三个单独的路径转换任务,其中一个处理前一个任务的结果。

最新更新