2012-01-19 10 views
1

Sonatypeの完全なリファレンスは、スコープ依存のコンパイルがすべてのクラスパス上にあり、アーティファクトとともにパッケージ化されていると言います。依存関係は、maven jarアーティファクトでパッケージ化されているはずですか?

コンパイルがデフォルトの有効範囲です。 スコープが指定されていない場合、すべての依存関係はコンパイルスコープになります。コンパイル依存関係はすべての クラスパスで使用でき、パッケージ化されています。

私はそれらがパッケージ化されていることはわかりません。 。 。 jarファイルに含まれるべきではありませんか?そうでない場合、それはどういう意味ですか?

答えて

1

あなたは正しいですか?コンパイルされたスコープの依存関係は、出力jarにパッケージ化されません。 (JARプラグイン付き)。私は 'パッケージ'は最終製品(バイナリ実行可能ファイル)を指していると思います。

私はこのstackOverflowスレッド(How can I create an executable jar with dependencies using Maven?)に遭遇しました。ここでは、すべての依存関係をパッケージ化して、Mainクラスから実行可能ファイルを構築しています。その場合は、パッケージ化された実行可能ファイルにすべてのコンパイル時間の依存関係が必要です。 (JAVA遅延ロードは必須ではありませんが、すべてのコンパイル時間依存性を持つことをお薦めします)

+2

「パッケージ」は、実行時に実行可能な最終製品を表すとは思われません。これは、同じ書籍に記載されている「提供された」スコープが、依存関係がWARアーティファクトにパッケージ化されていないスコープとして記述されているためです。 WARとJARはどちらもパッケージ段階で生成されます。 。 。おそらく答えは、Jarパッケージはアーティファクトに依存関係を置かないということです。これは、JARの場合、コンパイルと提供されたスコープに違いはないと私に結論づけるでしょう。 。 。あなたはその声明についてどのように感じますか); – chad

+0

あなたの議論は有効なものだと思います。提供される範囲は、パッケージングタイプが戦争である場合にのみ意味があります(他のパッケージタイプもあります)。 –

関連する問題