2012-04-30 19 views
0

lib/ディレクトリにJarを持つ代わりに、を依存関係のjarファイルからWAR classes/ディレクトリにすべて含めたいと思います。私もMavenの依存性 - プラグインを参照してください解凍されたJAR依存関係を持つWARをビルドしますか?

my-webapp/ 
    ... 
    WEB-INF/ 
    classes/ 
     mylib-1.0-SNAPSHOT (all **.class**) 

が、それは私のjarファイルは、ローカルまたはリモートリポジトリにインストールされている必要があります

my-webapp/ 
    ... 
    WEB-INF/ 
    lib/ 
     mylib-1.0-SNAPSHOT.jar 

は私が希望:

は私が持っています。しかしmylib-1.0-SNAPSHOT.jarは私のWARの前に正義でコンパイルされています。私がmvn packageを呼び出すと、失敗します。

したがって、jar依存関係をwarクラスに展開するにはどうすればよいですか? (maven-shade-plugin for Jarのように)

+1

Webアプリケーションではなく、クラスをjarにするのはどうですか? – jddsantaella

+0

Jarには私のサービスのコモンズクラスが含まれているため、このWebアプリケーションには特定のクラスが含まれています。私は同じクラスを使用して複数のwebappsを持っているので、Jarの依存関係にそれらをパッケージ化しました。コードを重複しないように!それは正しい方法だと思いますか? – Aure77

+0

'WEB-INF/lib'ディレクトリにある共通のjarのクラスを引き続き使用することができます。 'WEB-INF/lib'のすべてがWebアプリケーションのクラスパスになります。 – user944849

答えて

0

私はこれをcommnetで書いてみましたが、テキストが長すぎます。

申し訳ありませんが、私はあなたの要点を得ることはありません。クラスを共有する複数のWebアプリケーションがあるので、それらの共通クラスをJARにパッケージ化しているので、jarを配布してコードの重複を避けることができます。それは大丈夫です。この時点で、Webアプリケーションの場合、/ WEB-INF/classesにあるクラスと/ WEB-INF/lib /にあるクラスは、jarの一部として違いがありません。どちらの場合でもwebappでクラスを使用できます。

Mavenでは、n個のプロジェクトが必要です。 1つはあなたの一般的なjarファイル、もう1つはwebapp(あなたが一般的なjarファイルが依存ファイル)にあります。 WebアプリケーションのWARをビルドする前に、共通のクラスが変更されている場合は、最初に共通リポジトリにjar:mvn installをインストールする必要があります。 jarがインストールされたら、WARを構築することができます。mvn war:war

+0

しかし、この問題は、同じパッケージ内の別のクラスに依存するクラスがある場合に発生します。これらのクラスを私の具体的なデータのためのコモンズクラスと* classes folder *のJarに分けることは私にとって自然なことではありません。さらに、私のプロジェクトは実際にAntでビルドされています.Mavenのためにそれを変更すると、私のdeliverable(jar、war、ear)構造が変わります。 – Aure77

+0

ここで、Antの代わりにMavenを使用するように要求されていれば、共通クラス用の共通jarと、特定のコード用の 'classes'フォルダ(特定のwebappアプリケーションへの固有のソースコード)です。あなたが慣習から何かをしようとすると、Mavenはそれほどうれしくないので、避けてみてください。 – jddsantaella

関連する問題