1

Javaアプリの構築に使用するANTファイルで奇妙な問題が発生しています。jarファイルを生成するとき、最終的には次のようにzipfilesetを使用してJARにリソースファイル(画像、フォント、構成ファイル)を含めます。

                    <zipfileset dir="src/res" prefix="res"/>
                <zipfileset dir="src/res/images" prefix="res/images" />
                <zipfileset dir="src/res/images/Bubbles" prefix="res/images/Bubbles"/>
                <zipfileset dir="src/res/images/Clocks" prefix="res/images/Clocks"/>
                <zipfileset dir="src/config" prefix="res/config"/>
                <zipfileset dir="src/ontology" prefix="res/ontology"/>

元の構造を維持するには、次のようになります。

res
 |-images
 |   |-Bubbles
 |   |-Clocks
 |-fonts
 |-config
 |-ontology

したがって、JAR内で複製されるので、zipfilesetのprefixパラメーターを使用しています。問題は、res / images/Bubblesフォルダーとres/images / Clocksフォルダーのいずれかで、res / imagesとトリプルイメージ(同じイメージの3つのコピー)で複製されたイメージを取得しているということです。それぞれ2と3の深度レベル。res/configとres/ontologyは正しく、重複したファイルはありません...私が何を意味するかを確認するためのスクリーンショット:

ここに画像の説明を入力してください

言及するのを忘れましたが、明らかに、すべてのフォルダーに各イメージのインスタンスが1つしかありません。この動作を引き起こしているアイデアはありますか?

よろしく、アレックス

4

2 に答える 2

3

ant実際には、あなたが言ったことを正確に実行します。あなたは彼にこう言いました:

  • すべてのファイルを下にパックし、src/resそれらをにマップしますres
  • すべてのファイルを下にパックし、src/res/imagesそれらをマップしますres/images
  • src/res/images/Bubblesすべてのファイルを下にパックしますres/images/Bubbles

src/res/images/Bubbles/activity_bubble_orange.pngここで、ファイルがあると仮定しましょう。そのファイルは、最初のzipfileset、2番目のzipfileset、および3番目のzipfilesetに含まれています。エルゴそれは3回梱包されます。

やりたいことを行うには、シングルを実行する必要がありますが、<zipfileset dir="src/res" prefix="res" />includes/excludesフィルターを使用してコンテンツをフィルター処理します。

ここを参照してください:http ://ant.apache.org/manual/Types/zipfileset.htmlこれはファイルセットの一種であると書かれています。http://ant.apache.org/manual/Types/fileset.htmlで、ファイルセットのincludes/excludesフィルターを指定する方法を確認してください。

于 2012-06-04T22:58:21.090 に答える
1

次の属性を使用して、各サブディレクトリをハードコーディングせずにパス全体を含めることができます。

include ="* /。*"

<zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/>

上記の例では、*。htmlを再帰的にインクルードしています。

Sukhbir Dhillon Addteq

于 2012-06-05T00:04:08.350 に答える