2012-03-16 8 views
1

Antで初めてJARを作成しようとしていて、何か難しかったです。ここに私のプロジェクトのディレクトリ構造は次のとおりです。私のAntのbuildscriptでAntで必要な方法でjarファイルを構造化できない

MyProj/ 
    src/ 
     com.me.org 
      Fizz 
      Buzz 
    dist/ 
     classes/ 

、私はdist/classes/フォルダに私のすべてのソース・ファイルをコピーしています。それから私はそうのような私のJARタスクにファイルセットとしてdist/classesを含めています:

<jar destfile="dist/myProj.jar"> 
    <manifest> 
     <attribute name="Sealed" value="true" /> 
    </manifest> 

    <fileset dir="dist/classes"/> 
</jar> 

JARタスクが実行され、JARを生成します。

インポートclasses.com.me.org:私は別のプロジェクト(エクリプス)のビルドパスにそのJARを置くと、他のプロジェクト内FizzまたはBuzzのいずれかを使用しようとすると、しかし、Eclipseは、それらを輸入しています。フィッツ;

その他Eclipseは私のclasses/ディレクトリがパッケージだと考える必要があるためです。

私が仮定は、私が言うことをマニフェストに行うことができるものだ、彼らは次のようにインポートされるように「!はちょっとルートパッケージがclasses/com/、ないclasses/ある!」:

輸入com.me .org.Fizz;

私はAnt <manifest>タスクを読み、私が探していたものが見つかりませんでした。誰でも私がここで何ができるか考えていますか?は私がclasses/ディレクトリの下にそれらをパッケージ化したい、なぜあなたは私が含まれているJAR内の1つのディレクトリを持つことのアイデアが好きなので、私はそのことを言うだろう、になど興味があれば

そして、クラスパス全体。特に、Java以外のクラスパスリソース(イメージ、スクリプト、ファイルなど)がある場合は、パッケージルート(com/)とこれらの他のリソースを同じ親ディレクトリに入れる必要があります。

元々、私はこのディレクトリをclasspath/と呼ぶつもりでしたが、私はWARファイル仕様と同じ規約を使用することに決めました。これには、WAR内にclasses/ディレクトリが必要です。

それが理由です。 ;-) 前もって感謝します!あなたはおそらくあなたのアリファイルセットになりたい

+0

私はそれがパッケージがルートで始まり、いくつかのディレクトリの下に置かれなければならないという瓶の規則であると思います。 – oers

+0

あなたのことを疑うことはありません(そしてありがとう!)私は私の検索でそれを見ていない。 – IAmYourFaja

+0

warファイルに/ WEB-INF/classesディレクトリ(/ classes以外)がまったくない*要件*はありません。すべてのあなたのアプリのクラスはちょうど瓶の中にあることができます。クラスは、パッケージがどこにあるかを正確に特定する必要があります(カスタムクラスローダーとは異なります)。すべてをまとめてみると、ビルドプロセス中に発生します。私はあなたが非標準の階層を課すことによって達成していると思っていることを理解していません。 –

答えて

0

Class-Path属性をマニフェストに追加しようとしましたか?

Class-Path : classes/ 

問題が解決しない場合は、あなたがルートレベルにあなたのクラスを含むjarファイルをパッケージ化してからmyProj.jarにそれを追加する必要がある場合があります私は、次のように動作します追加すると思います。したがって、まず、クラスmyClasses.jarだけでjarを作成し、そのjarをmyProj.jar内にパッケージ化します。マニフェストは含まれています:

Class-Path : classes/myClasses.jar 

とあなたのjarファイルは、次のようになります。私は実際にこれを試したことがありません

myProj.jar 
    - META-INF/MANIFEST.MF 
    - classes/myClasses.jar 

ので、申し訳ありません期待どおりに動作しない場合。 Here isクラスパス属性の詳細

-1

<fileset dir="dist/classes" includes="**/*" /> 

ちょうどディレクトリ自体を有することにより、「クラス」ディレクトリには、あなたのjarファイルに入れているものです。インクルードを置くことによって、クラスをベースとして使用しています。次に、そのディレクトリのすべての内容を取り出し、それをjarファイルに入れます。

+0

あなたのご意見に感謝しますが、私はあなたが私の質問を読んでいないと確信しています! **私のJARファイルの 'classes /'ディレクトリが欲しいです! – IAmYourFaja

関連する問題