1

次のANTスクリプトがあり、websphereルートディレクトリに基づいて実行時にwebsphereライブラリのリストが表示されます。結果の文字列を個別のパスロケーション要素に変換する必要があります

私の現在のスクリプトは

<?xml version="1.0" encoding="UTF-8"?>
<project name="TestPath" basedir="." default="print-dirset">

    <target name="init" description="Define websphere libraries">
        <property name="compile.lib.dir" value="C:\Software\WAS85" />
    </target>
    <target name="print-dirset" depends="init" description="">
        <path id="websphere.libs">
            <dirset dir="${compile.lib.dir}">
                <include name="*" />
            </dirset>
        </path>
        <property name="websphere.libs.list" refid="websphere.libs" />
        <echo message="websphere.libs.list: ${websphere.libs.list}" />
        <pathconvert property="websphere.libs.convert" pathsep="${file.separator}*${path.separator}">
            <path path="${websphere.libs.list}" />
        </pathconvert>
        <echo message="websphere.libs.convert: ${websphere.libs.convert}" />
    </target>
</project>

以下のような文字列を出力します

 [echo] websphere.libs.list: C:\Software\WAS85\Scheduler;C:\Software\WAS85\UDDIReg;C:\Software\WAS85\bin;C:\Software\WAS85\configuration;....C:\Software\WAS85\web;C:\Software\WAS85\wlp
 [echo] websphere.libs.convert: C:\Software\WAS85\Scheduler\*;C:\Software\WAS85\UDDIReg\*;C:\Software\WAS85\bin\*;C:\Software\WAS85\configuration\*;...C:\Software\WAS85\web\*;C:\Software\WAS85\wlp

上記の2番目の文字列を以下のような構造に変換したいと思います

<path id="websphere.classpath">
    <pathelement location="C:\Software\WAS85\Scheduler\*" />
    <pathelement location="C:\Software\WAS85\UDDIReg\*" />
    <pathelement location="C:\Software\WAS85\bin\*" />
    <pathelement location="C:\Software\WAS85\configuration\*" />
......
    <pathelement location="C:\Software\WAS85\web\*" />
    <pathelement location="C:\Software\WAS85\wlp\*" />
</path>

変換の最後の要素も、元の文字列にない「\*」部分を追加する必要があります。

その後、次のような構造で使用できます

<path id="compile.classpath">
  <path refid="ext.classpath"/>
  <path refid="websphere.classpath"/>
  <path refid="module.compile.classpath"/>
</path>

上記の試みの目的は、JDK 1.6によって提供され、ANT1.8.2以降のANTで使用可能なワイルドカードクラスパスを使用してクラスパスの長さを短縮することです。ANT1.8.4を使用しています。

私はANTの専門家ではありません。例を見るだけで、うまくいくことができます。

私がやろうとしていることを達成する方法はありますか?どうすればいいですか?どんな例でも非常に役に立ちます。

4

2 に答える 2

0

すべての依存関係がにある場合は、ファイルセットC:\Software\WAS85を使用してすべての依存関係をキャッチできます。

<fileset dir="${compile.lib.dir}" id="compile.files">
  <include name="**/*.java"/>
  <!-- include name="**/*.jar" /-->
</fileset>

次に、を使用して、このファイルセットをcompile.files他の場所と同じように参照できますbuild.xml

于 2013-01-03T15:35:48.607 に答える
0

javacタスクでfork="yes"属性とexecutable="path-to-my-executable"属性を使用することで、ワイルドカード部分を機能させることができました。

私の基本的な質問は文字列の変換に関するものだったので、回答済みの質問にマークを付けたくありません。しかし、受け取った回答はそれについて話しておらず、ワイルドカードクラスパスを機能させる方法についても言及していませんでした。私の質問の目的はワイルドカードクラスパスを機能させることだったので、それを取得しようとしている人のためにここに書き留めました。働くために

セミコロンで区切られた文字列を以下のように構成するために変換するには、まだいくつかの助けが必要です

<path id="websphere.classpath">
    <pathelement location="C:\Software\WAS85\Scheduler\*" />
    <pathelement location="C:\Software\WAS85\UDDIReg\*" />
    <pathelement location="C:\Software\WAS85\bin\*" />
    <pathelement location="C:\Software\WAS85\configuration\*" />
......
    <pathelement location="C:\Software\WAS85\web\*" />
    <pathelement location="C:\Software\WAS85\wlp\*" />
</path>

アップデート:

ワイルドカードクラスパスを機能させるためのカスタムANTタスクを作成しました

于 2013-02-03T14:06:02.040 に答える