4

さまざまな Spring モジュールを活用するスタンドアロン アプリケーションをビルドする pom ファイルがあります。特に、統合ファイル モジュールを使用します。もともと、私の pom ファイルは Maven Assembly プラグインを使用していましたが、作成された uber jar は正しく実行されませんでした。さらに調査すると、基本的に uber jar の依存関係を台無しにするアセンブリ プラグインにバグがあることが示されているようです。推奨される回避策は、私のために機能している Shade プラグインです。

ただし、アセンブリ プラグインは、uber jar とその他のリソース (プロパティ ファイル、スクリプトなど) を含む zip ファイルを作成できます。次に、そのzipを使用して解凍し、jarを呼び出して他のアイテムを渡すスクリプトを実行できます(例として)。私が知る限り、shade プラグインはこの追加機能を実行しません。

プロファイルを使用してシェード プラグインとアセンブリ プラグインを組み合わせてみましたが、シェード プラグインを使用して uber jar をビルドし、その後、アセンブリ プラグインを使用して他のもので zip をビルドする方法がわかりません。

誰かが似たようなことをしましたか?Uber jar を作成し、その uber jar をスクリプト、xml、およびその他のアイテムと一緒に圧縮できるようにすればよいだけです。

フェーズにバインドせずにアセンブリ プラグインを実行する方法はありますか? もしあれば、パッケージを実行してシェードプラグインを実行し、その後アセンブリプラグインを個別に実行できますか? 可能であれば、それは私の問題を解決します。

4

2 に答える 2

4

この回答には少し遅れていますが、私はあなたと同じシナリオを持っています (「パッケージ フェーズ」: 1. シェード付きの uber-jar をビルドし、2. アセンブリ zip にパックします)。で指定されているプラ​​グインpom.xml

アセンブリの前に shade が指定されている場合は、同じフェーズの前に実行されます。

于 2014-05-28T17:27:55.543 に答える
2

マルチモジュール プロジェクトでは、zip をアセンブルするためだけに別のモジュールを使用するのが一般的です。あなたにとって興味深いかもしれないappassemblyr-maven-pluginもあります(ただし、私自身は使用したことがありません)。

フェーズなしでプラグインを実行することについて: それは常に可能です。目標ページで指定されているフルネームを実行します。この場合org.apache.maven.plugins:maven-assembly-plugin:2.4:single、または略してassembly:single

プロファイルでこれを解決しようとしないでください。プロファイルはそのためのものではありません。

于 2013-12-15T10:37:35.330 に答える