0

Ant スクリプトから ear ファイルを作成しようとしています。さまざまなプロジェクトを使用して .jar および .war (ear 内に含まれる) ファイルを作成するターゲットがいくつかありますが、これらは問題なくビルドされているため、含めません。

このディレクトリ構造を想像してください:-

Project1/
  build/ 
  lib/
  META-INF/
  build.xml

そのため、ant スクリプトが呼び出されると、ビルド ディレクトリが削除され、再作成されます。これはすべてかなり標準的なものです。次に、外部プロジェクトから jar と war を作成し、それらを build/ に保存します。すべて問題ありません。

しかし、ディレクトリ lib/ および META-INF/ も ear ファイルに含めたいと考えています。そこで、このターゲットを使用してそれらをビルド ディレクトリにコピーしようとしました。

<target name="file_cleanup">
    <copy todir="${build}">
        <fileset dir="lib/"/>
        <fileset dir="META-INF/"/>
    </copy>
</target>

この file_cleanup ターゲットは、以下に示すように、ear を作成するデフォルトのビルド ターゲットに依存しています。

   <target name="ear" depends="initialise, file_cleanup, other targets...">
        <ear destfile="My.ear" appxml="META-INF/application.xml">
            <fileset dir="${build}" includes="*.jar,*.war"/>
        </ear>
    </target>

耳を摘出するときに見たいのは次のとおりです。

target1.jar
target2.war
lib/
META-INF/

しかし、私が実際に得るものは次のとおりです。

target1.jar
target2.war
and all of the contents of both the lib and META-INF directories...
4

1 に答える 1

2

追加のプロパティとディレクトリを作成し、ディレクトリ構造を新しいディレクトリにコピーすることで、この問題を解決できました。

<target name="initialise">
    <delete dir="${build}"/>
    <mkdir dir="${build}"/>
    <mkdir dir="${build}/${lib}"/>
    <mkdir dir="${build}/${meta-inf}"/>
</target>


    <target name="file_cleanup">
        <copy todir="${build}/${lib}">
            <fileset dir="lib"/>
        </copy>
        <copy todir="${build}/${meta-inf}">
            <fileset dir="META-INF"/>
        </copy>
    </target>
于 2013-08-12T12:32:38.457 に答える