依存関係管理および範囲
質問
私は通常
<dependencyManagement>
セクションに
parent-project/pom.xml
. これは
<dependencyManagement>
セクションには、このような子モジュールのすべての依存関係の宣言とバージョンが含まれています (つまり、このセクションでは
<scope>
要素なし) です。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</dependencyManagement>
すべての子モジュール(つまりmoduleX/pom.xml)で、私は。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
明らかに、この例では、私は繰り返し
<scope>test</scope>
を同じ依存関係に対して複数回繰り返しています(junitを必要とするすべての子モジュールで1回)。
私の質問は
に関するベストプラクティスは何ですか?
<scope>
宣言に関するベストプラクティスは何ですか?
に入れた方がいいのでしょうか?
<dependencyManagement>
?
それとも
<dependencies>
セクションに置いたほうがいいのでしょうか?また、その理由は?
この質問に対する決定的な回答はあるのでしょうか?
どのように解決するのですか?
少し遅ればせながら、私の意見を述べさせていただきます。
私は最近、非常にデバッグが困難な問題に遭遇しました。
私は、複数のプロジェクト間で依存関係を管理するための親 pom を持っています。 私は、複数のプロジェクト間で共通するすべての依存関係を設定し、以下のものを含んでいました。
groupId
,
artifactId
,
version
というように
最も一般的な
scope
.
私の考えでは、それに沿っていれば、各プロジェクトの実際の依存関係のセクションにスコープを含める必要はないでしょう。
最も一般的な
scope
.
問題は、これらの依存関係のいくつかが推移的依存関係として表示されたときに発生しました。 たとえば、次のような場合です。
- A はコンパイル スコープで B に依存します。
- B はコンパイル時に C に依存します。
-
C は
dependencyManagement
の親に提供されます。
とすると、AのCに対する推移的依存関係は、提供されると判断されます。 意味があるのかないのかよく分かりませんが、確かに紛らわしいですね。
とにかく、手間を省くために
scope
の外に
dependencyManagement
.
関連
-
[解決済み] Gradleのimplementation, api, compileの違いは何ですか?
-
[解決済み] Mavenスナップショットとは何か、なぜそれが必要なのか?
-
[解決済み] MavenにおけるdependencyManagementとdependenciesの相違点
-
[解決済み] Gradleで、共通の依存関係を一箇所で宣言するにはどうしたらいいですか?
-
[解決済み] リソースのフィルタリングのためにmaven.build.timestampにアクセスする方法
-
[解決済み] repository tag under distributionManagement vs repositories?
-
[解決済み] Mavenの依存関係をグローバルに除外する方法はありますか?
-
[解決済み] Intellij 14でMavenプロジェクトのウィンドウを表示する方法|アップデート:Mavenプロジェクトで右側の「タブバー」が表示されない
-
[解決済み] mavenの依存関係のタイプ "bundle "の意味は何ですか?
-
[解決済み] MavenとシステムスコープへのJARの追加
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Maven : "runtime "スコープは何のためにあるのですか?重複
-
[解決済み] repository tag under distributionManagement vs repositories?
-
[解決済み] GradleプロジェクトのmavenアーティファクトIDはどのように設定しますか?
-
[解決済み] Mavenの依存関係をグローバルに除外する方法はありますか?
-
[解決済み] なぜpom.xmlのmodelVersionは必要で、常に4.0.0に設定されるのですか?
-
[解決済み] Intellij 14でMavenプロジェクトのウィンドウを表示する方法|アップデート:Mavenプロジェクトで右側の「タブバー」が表示されない
-
[解決済み] Maven pomのparentタグは何を表しますか?
-
[解決済み] mavenのjavaホームを変更する方法 [重複]。
-
maven: コマンドラインオプションまたは環境変数を使用してローカルリポジトリの場所を上書きすることは可能ですか?
-
GitLab CIランナーでmaven artifact cachingを有効にする方法とは?