2011-09-11 15 views
1

私はGUIのない​​Javaコマンドラインプロジェクトを作成しています。このプロジェクトでは、Spring、Logback、Commons CLIなど、いくつかのオープンソースプロジェクトを使用します。 私がパッケージングについて考え始めると、libサブディレクトリ、およびlib内の依存するjarファイルが含まれます。コマンドラインJavaプロジェクトをパッケージ化する最良の方法

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

私はMavenの国会でプレーしてきたが、それでも上記のように出てきていない、と私は上記の構造を生成しない任意の例は見つかっていません。それは可能ですか? さらに、マルチモジュール構造にすることで、アセンブリモジュールがコアモジュールを依存関係として見つけることができないため、解決できなかった複雑なレイヤが追加されます。これは私の最初のMavenプロジェクトです.Mavenの動作方法もまだ習っています。私はSonatypeの本を読んできましたが、ベストプラクティスセクションを使用しても欠落している依存関係を解決できなかったため、何かを見逃しました。 私が見た例では、通常、実行可能なjarファイルへのマージが含まれていますが、その中にはShadeプロジェクトを使用するものもあれば、そうでないものもあります。私の質問は、Springのようなサードパーティ製のライブラリを含むuber jarをやっていますか?または、私のオリジナルのzip/libサブディレクトリ計画で辛抱強くしなければならないのでしょうか?

答えて

2

アセンブリモジュールはパッケージ化するモジュールによって異なりますが、< dependencySets> of < moduleSets>タグを使用して任意のレイアウトに組み込むことができます。依存関係から来ていない他のファイルがある場合は、それらを展開モジュール自体に入れることができます。

アセンブリ記述子ドキュメントをよく読んでください。パッケージ、アンパック、組み込み/除外、およびアセンブリのファイルのアクセス許可の設定ができます。あなたはMavenの上sonatypeの本を見ていない場合は

は、ここでは関係章では、次のとおりです。http://www.sonatype.com/books/mvnref-book/reference/assemblies-sect-best-practices.html

EDIT:あなたは自分のアセンブリ・ディスクリプタで、より具体的にする必要があり<の

+0

返信いただきありがとうございます。私はもう少し作業をして問題を解決しましたが、これが正しいアプローチであるかどうかについてはまだ賢明ではありません。私の元来の質問は、ユーバージャーと一緒に行くのか、それともlibプランを続けるのかということでした。戦略に関するアドバイスや参考資料はありますか? –

+0

私は返信を始めましたが、私はもっと言いたいことがあることを発見しました。それはSO答えのためにちょっと主観的でしたので、代わりにブログエントリを書きました。見て、あなたが何を考えているか教えてください:http://foobarbazqux.blogspot.com/2011/09/common-scenarios-for-java-application.html – ddimitrov

+0

はい、ブログのエントリは非常に有用であり、考えていなかった - ありがとう! –

1

をエスケープ。メインjarのみを含み、それをトップに配信する1つのdependencySetを使用し、メインJarのみを除外してlibディレクトリに配信する別のものを使用します。

+0

ありがとう、と私は結局2つの依存関係のアイデアの作業を得た。まだこの状況のた​​めの最良のアプローチだと思っています。 –

関連する問題