2

コンパイルされた webapp (war ファイル) と src/main/folder の下のすべてのファイルの両方を含む zip ファイルを実行するたびにパッケージ化するように (pom.xml と assembly.xml を使用して) 構成された Maven プロジェクトがありますmvn clean package assembly:single

このプロジェクトは別の maven プロジェクト (jar ファイルになる) をインポート/使用し、そのプロジェクトは 3 番目の maven プロジェクト (再び jar ファイル) もインポート/使用します。

3 番目のプロジェクトには、src/main/folder 内にもいくつかのファイルが含まれており、メイン プロジェクト (war ファイルになるチェーンの一番上にあるもの) をビルドするたびに、zip ファイル内の他のファイルと一緒に配置したいと考えています。 )。

すべての依存関係 (または 1 つの特定の依存関係) 内の特定のフォルダー内のすべてのファイルを zip ファイルに含めるように maven に指示することは可能ですか?

4

2 に答える 2

2

ここから始めてください: Maven: The Complete Reference - 8.5. アセンブリの内容の制御

deployMaven プロジェクト(コマンド ラインでは使用せずassembly:assembly、実際にはプラグインとして構成する必要があります) を使用する場合、アセンブリはプロジェクトに「アタッチ」され、リポジトリにインストールされることに注意してください。<build>その後、Maven の依存関係表記を使用してそれらに到達できます。つまり、mygroup:myartifact:extrafiles:zip

アセンブリ記述子<dependencySets>を構成するのが面倒であることがわかりました。これらは実際には単純なケース (アプリケーションが実行時に必要とする JAR ファイルを含む) 用です。

希望する結果を得るために私が取る一般的なアプローチは次のとおりです。

  1. Maven Dependency Plugin を使用dependency:copyして、他のプロジェクトから特定のファイルをダウンロードし、それらをtarget/

  2. アセンブリ記述子を構成して、ダウンロード/抽出されたファイルを最終的なアセンブリ成果物に追加します。

または、 Maven Ant Run Pluginを使用して何かを一緒にハックします。

于 2012-10-11T17:56:41.907 に答える
1

追加のファイルをパッケージ化するには、3番目のプロジェクトから追加のアセンブリを作成する必要があります。アセンブリIDを追加して、third-1.0.0-extrafiles.zipのような名前のパッケージを生成します。

次に、依存関係記述子で<type> extrafiles </ type>を使用して、これを最初のプロジェクトの依存関係として追加します。最初のプロジェクトのアセンブリでは、このタイプの依存関係を「解凍」するように指示する必要があります(したがって、zipでzipを取得することはありません)。

于 2012-10-11T10:20:51.473 に答える