1

ANTスクリプト内でC:\ temp \ java \ com \ abc \ def\xyzディレクトリにあるJavaクラスをcom.abc.def.xyz。[ClassNameWithoutDOTClass]に変換する必要があるという要件があります。

私はANTで次のように書いています。

<property name="build.ws.java.dir" value="C:\temp\java" />
<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:\temp\java\com\abc\def\xyz\DummyServiceWS.class
 [echo] Trimmed wsClass = com\abc\def\xyz\DummyServiceWS.class

' com.abc.def.xyz.DummyServiceWS 'のようなものを期待しています。誰かが私が欠けているものを指摘できますか?

ありがとう、

-

SJunejo

4

2 に答える 2

2

実際、高度なマッパー オプションを使用して方法を見つけました。この場合は[packagemapper]を使用しました。したがって、私の更新されたスクリプトは次のようになります。

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

上記は次のように正しい値を返します。

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

お役に立てれば、

--

シュネホ

于 2012-06-09T12:13:45.103 に答える
0

pathconvert マニュアルからの引用:

注:マップ要素は指定された順序で適用され、最初に一致したマップ要素のみが適用されます。そのため、from 値のいずれかが他の from 値のプレフィックスである場合、マップ要素の順序が重要になる可能性があります。

これは、最初のマッピングが一致したため、他のマッピングが無視されたことを意味します。3 つの個別の pathconvert タスクを指定する必要があります。1 つは前のタスクの結果に作用します。

于 2012-06-09T03:21:47.977 に答える