compile
Maven スコープと、アーティファクトが 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」を使用します。