わかりました、これはおなじみの質問かもしれませんが、私はまだ混乱しており、詳細を本当に明確にする答えを見つけるのに苦労しています.
私がいくつかの Maven プロジェクトを持っているシナリオ では、大多数が JAR アーティファクトを作成し、1 つが WAR アーティファクトの作成を担当しています。WAR アーティファクトには、これらの JAR が WEB-INF/lib フォルダー内に含まれるようにするために、コンパイルのスコープを持つ JAR アーティファクトへの依存関係があります。
このプラグインが、どの依存関係と推移的な依存関係が WARs lib フォルダーに含まれるかに関して、スコープにどのように応答するかはまだ不明です。私の理解では、コンパイルすると、コンパイル スコープで宣言されている (再帰的になど) 依存関係と共に JAR が含まれることになりますが、提供されると費用はかかりません。指定されたスコープの依存関係は含まれません。
問題
具体的な例を挙げると、WAR プロジェクトは、コンパイルのスコープを持つwar-a
内部 JAR プロジェクトに依存しています。スコープのため、WARs lib フォルダーに含まれます。コンパイルの範囲で、サードパーティ ライブラリ log4j に依存するようになりました。log4j JAR も、そのスコープのために lib フォルダーに含まれます。しかし...メールなどのlog4jの依存関係もそうです。log4jが必要ですが、その依存関係は必要ありません。提供された log4j を構成すると、その依存関係は含まれませんが、それ自体も含まれません。jar-a
jar-a
jar-a
除外を使用するなどのオプションを検討しましたが、40 以上の内部 JAR プロジェクトがある場合、POM ファイルで多くの除外が行われます。また、除外を使用するには、サードパーティの依存関係に関する特定の知識を知る必要がありますが、これは不要だと感じています。
誰かが上記のいずれかを明確にし、拡張し、答えることができますか? どんな入力でも大歓迎です。
更新上記に加えて、私は決定に行き詰まっています。必要なサードパーティ JAR のリストを WAR 内にバンドルできるようにする必要があります。これは、私たちが持っているさまざまな内部 Maven JAR プロジェクトのコンパイル スコープの依存関係を介して解決されます。または、すべてのサード パーティの依存関係を内部 Maven JAR プロジェクト内で提供されているものとして宣言し、Maven WAR プロジェクトのコンパイル スコープで明確なセットを指定する必要があります。
追加のサードパーティの依存関係が推移的な依存関係パスを介して WAR アーティファクトに自動的に追加されるため、私は前者のアプローチを好みます。しかし、2 番目のアプローチでは、どのサードパーティ ライブラリが含まれるかを正確に知ることができます。