Maven スコープのコンパイルと JAR パッケージ化の provided の違い 質問する

Maven スコープのコンパイルと JAR パッケージ化の provided の違い 質問する

compileMaven スコープと、アーティファクトが JAR としてビルドされる場合の違いは何ですかprovided? WAR であれば、理解できます。アーティファクトは WEB-INF/lib に含まれるか含まれないかです。しかし、JAR の場合は関係ありません。依存関係は含まれません。スコープが または の場合、依存関係はクラスパス上になければなりませんcompile。依存関係は推移的ではないprovidedことはわかっていますprovidedが、違いは 1 つだけですか?

ベストアンサー1

コンパイルとは、アプリをコンパイルして実行するために JAR が必要であることを意味します。たとえば、Web アプリケーションの場合、JAR はWEB-INF/lib ディレクトリに配置されます

提供されるということは、コンパイルには JAR が必要だが、実行時には環境によって JAR が既に提供されているため、アプリにパッケージ化する必要がないことを意味します。Webアプリの場合、これは JAR ファイルがWEB-INF/lib ディレクトリに配置されないことを意味します。

Web アプリの場合、アプリ サーバーがすでに JAR (またはその機能) を提供している場合は「provided」を使用し、そうでない場合は「compile」を使用します。

ここに参考資料があります。

おすすめ記事