20

ファイルセット (Maven Ant タスクから返される) があり、再パックする必要があるすべての jar が含まれています。このファイルセットは、refid によって参照されます。独自の jar のみを含めたいので、それをフィルター処理したいと思います。ただし、Ant ファイルセットは、refid が使用されている場合、それ以上の属性やネストされたタグをサポートしません。

たとえば、ファイルセットが次の場合:

org.foo.1.jar
org.foo.2.jar
log4j.jar

のみを含むファイルセットが必要です

org.foo*.jar

どうすればいいですか?

4

4 に答える 4

27

restrictリソース コレクションを使用してみてください。これは、リソース コレクションfilesetを使用して操作するファイルのグループを選択するタスクのように使用できます。

たとえば、fileset呼び出された ID を介して参照される Maven タスクから返された の場合、次のようdependency.filesetにリソース コレクションを宣言できます。restrict

<restrict id="filtered.dependencies">
    <fileset refid="dependency.fileset"/>
    <rsel:name name="org.foo*.jar"/>
</restrict>

組み込みの Ant 名前空間の一部ではないため、リソース セレクターの名前空間を宣言する必要があることに注意してください。

<project xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
    ...
</project>

ここから、 を参照するrestrictのと同様の方法でリソース コレクションを参照できますfileset。たとえば、フィルター処理された一連のファイルのバックアップを作成するには、次のようにします。

<copy todir=".">
    <restrict refid="filtered.dependencies"/>
    <globmapper from="*" to="*.bak"/>
</copy>

もちろん、必要にrestrict応じてリソース コレクションをインライン化することもできます。

<copy todir=".">
    <restrict>
        <fileset refid="dependency.fileset"/>
        <rsel:name name="org.foo*.jar"/>
    </restrict>
    <globmapper from="*" to="*.bak"/>
</copy>

詳細については、リソース コレクションに関する Ant のドキュメントを参照してください。

于 2009-03-16T09:16:42.497 に答える
1

私はIvyで Ant を使用しています。Ivy の助けを借りて、ivy.xml で次のコードを使用して、依存関係をフィルター処理して取得することができます。

<dependency name="Project1" rev="latest.integration" transitive="true" conf="modlibs">
<exclude name="${exclusionRegEx}" matcher="regexp" />
</dependency>
<dependency name="Project2" rev="latest.integration" transitive="false" conf="modules"/>

たぶん、Ivy のソースをざっと見てみると役立つでしょうか?

于 2009-03-16T09:03:51.450 に答える
1

そのためには、ant タスクを作成する必要があると思います。ただし、それらは非常に簡単に記述できます。

http://ant.apache.org/manual/develop.html#writingowntaskを参照してください。

タスクでは、getProject() を呼び出して、ファイルセットを提供し、それを調べて、新しいファイルセットを作成するように依頼する必要があります。

于 2009-03-03T19:47:58.953 に答える
1

Ant 1.7 や JDK 6 など、十分に新しいバージョンの Ant と JDK を使用している場合は、オプションのスクリプト タスクを使用して、必要なことを行うことができます。(以前のバージョンも動作する可能性があります。)リンク先のページを下にスクロールすると、「ファイルサイズを一覧表示することが目標です」というテキストまでスクロールすると、ファイルセットを作成するサンプル スクリプトが表示されます。

これは気弱な人向けではありません。自分で作成したカスタム ant タスクは、おそらくより柔軟です。しかし、私はオプションを指摘したかった.

于 2009-03-03T20:01:57.190 に答える