1

GUI を使用せずに Java コマンド ライン プロジェクトを作成しています。このプロジェクトでは、Spring、Logback、Commons CLI などのオープン ソース プロジェクトをいくつでも使用しています。 、および lib 内の依存 jar 。

adapter.jar
 /lib/dependencyA.jar
 /lib/dependencyB.jar 
 etc.  

私はMaven Assemblyで遊んでいますが、それでも上記のようには出てこず、上記の構造を生成する例は見つかりませんでした. そうすることは可能ですか?さらに、マルチモジュール構造を持つことで、アセンブリ モジュールがコア モジュールを依存関係として見つけることができないため、解決できなかった別の複雑なレイヤーが追加されます。これは私の最初の Maven プロジェクトなので、Maven の仕組みをまだ学んでいます。私は Sonatype の本を読みましたが、ベスト プラクティスのセクションを使用しても不足している依存関係を解決できなかったため、何かを見逃していました。私が見た例には通常、uber 実行可能 jar へのマージが含まれており、その中には Shade プロジェクトを使用するものもあれば、使用しないものもあります。私の質問は、Spring などのサードパーティのライブラリを含む uber jar を実行するのは良い考えですか? それとも、元の zip/lib サブディレクトリ プランに固執する必要がありますか?

4

2 に答える 2

2

アセンブリモジュールをパッケージ化するモジュールに依存させてから、<moduleSets>タグの<dependencySets>を使用して、任意のレイアウトにそれらを含めます。依存関係に由来しない他のファイルがある場合は、それらをデプロイメントモジュール自体に配置できます。

アセンブリ記述子のドキュメントをよく読んでください。アセンブリ内のファイルのパック、アンパック、インクルード/除外、およびアクセス許可の設定を行うことができます。

Mavenでソナタイプの本を見たことがない場合は、関連する章を次に示します。http: //www.sonatype.com/books/mvnref-book/reference/assemblies-sect-best-practices.html

編集:<をエスケープしました

于 2011-09-11T21:27:25.993 に答える
1

アセンブリ記述子をより具体的にする必要があります。メインjarのみを含み、それを最上位に配信する1つのdependencySetと、メインjarのみを除外してlibディレクトリに配信する別のdependencySetを使用します。

于 2011-09-11T21:28:07.767 に答える