refidを使用して参照されるファイルセットをフィルタリングする

StackOverflow https://stackoverflow.com/questions/607338

  •  03-07-2019
  •  | 
  •  

質問

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

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

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

そして次のもののみを含むファイルセットが欲しい

org.foo*.jar

どうすればいいですか?

役に立ちましたか?

解決

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

たとえば、 dependency.fileset というIDを介して参照されるMavenタスクから返される 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>

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

<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ドキュメントをご覧ください。情報。

他のヒント

そのために蟻のタスクを書く必要があると思います。でも簡単に書くことができます。

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

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

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のソースを簡単に見てみるとよいでしょうか

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top