21

独自の JAR ファイル内のリソースにアクセスする必要があるプロジェクトがあります。プロジェクトの JAR ファイルを作成するとき、ディレクトリをその JAR ファイルにコピーしたいと思います (ZIP に相当するものは、既存の ZIP ファイルにディレクトリを「追加」することになると思います)。JARが作成された後にのみコピーが行われるようにしたい(そして、JARファイルを消去して削除した場合、コピーが行われることは明らかに望んでいない).

現在、ビルド ファイルは次のようになっています。

<?xml version="1.0" encoding="UTF-8"?>
<project name="foobar" basedir=".." default="jar">

    <!-- project-specific properties -->
    <property name="project.path" value="my/project/dir/foobar" />

    <patternset id="project.include">
        <include name="${project.path}/**" />
    </patternset>
    <patternset id="project.jar.include">
        <include name="${project.path}/**" />
    </patternset>

    <import file="common-tasks.xml" />

    <property name="jar.file" location="${test.dir}/foobar.jar" />    
    <property name="manifest.file" location="misc/foobar.manifest" />
</project>

一部のビルド タスクは別のファイル (common-tasks.xml) から呼び出されますが、ここでは表示できません。

4

3 に答える 3

19
<jar update="true">
...
</jar>
于 2009-02-05T22:27:12.073 に答える
13

Jar/Ear Ant タスクは、より一般的なZip タスクのサブタスクです。これはzipfileset、Jar タスクでも使用できることを意味します。

<jar destfile="${jar.file}" basedir="...">
    <zipfileset dir="${project.path}" includes="*.jar" prefix="libs"/>
</jar>

また、Jar に含めるために別のマニフェスト ファイルを定義していることも確認しました。ネストされたmanifestコマンドを使用することもできます。

<jar destfile="@{destfile}" basedir="@{basedir}">
    <manifest>
        <attribute name="Built-By" value="..."/>
        <attribute name="Built-Date" value="..."/>

        <attribute name="Implementation-Title" value="..."/>
        <attribute name="Implementation-Version" value="..."/>
        <attribute name="Implementation-Vendor" value="..."/>
    </manifest>
</jar>
于 2009-02-06T09:57:13.397 に答える
4

1 つの方法は、Ant タスクを使用することです。

  1. 解凍- Jar を展開するには一時フォルダーです
  2. コピー- 必要なフォルダーを一時フォルダーにコピーします。
  3. Jar - 'update' を true に設定して、temp フォルダーを元の jar ファイルにパッケージ化します。

Antマニュアルには、その方法の例があります。

于 2009-02-05T22:22:02.707 に答える