1

Maven では、依存関係管理セクションで依存バージョンを宣言できます。すべてのプロジェクトの一部のライブラリのデフォルト バージョンを管理するための pom があるとします (そのため、それらを何度も繰り返す必要がなく、すべてのプロジェクトである程度の一貫性を確保できます)。

次に、このpomを親pomとして設定した複数のプロジェクト(プロジェクトAとプロジェクトB)があります。プロジェクトで AI が spring.jar を使用したい場合、A の親 pom の依存関係管理で spring.jar が定義されている場合、A の pom で再度 spring バージョンを定義する必要はなく、Spring に依存することを定義するだけです。これまでのところ問題ありません。グラドルで行う方法も非常に簡単です(http://stackoverflow.com/questions/9547170)

私が疑問に思っているのは、この状況です:
spring 3.0 が hibernate 3.0 に依存していると想像してください。A の親 pom では、バージョン 3.1 の依存関係管理セクションで hibernate 依存関係を定義しましたが、Spring はそこで定義されていません。Spring は A の pom (バージョン 3.0) で定義されています。プロジェクト A の maven で依存関係を解決すると、Spring 3.0 と Hibernate 3.1 がフェッチされます。Spring 3.0 が Hibernate 3.0 に依存しているという事実にもかかわらず、A の親 pom の依存関係管理が hibernate バージョンをオーバーライドするため、代わりに 3.1 が使用されます。

gradleで似たようなものを定義する方法はありますか? A の pom で特に hibernate を指定する必要はなく、A の親 pom で依存関係として指定されていないことに注意してください。A の親 pom の依存関係管理セクションにのみあります。

4

1 に答える 1

2

io.spring.dependency -managementプラグインを使用すると、Maven bom を使用してビルドの依存関係を制御できます。

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE"
  }
}

apply plugin: "io.spring.dependency-management"

次に、これを使用して Maven bom をインポートできます。

dependencyManagement {
  imports {
    mavenBom 'io.spring.platform:platform-bom:1.1.4.RELEASE'
  }
}

バージョン番号を指定せずに依存関係をインポートできるようになりました。

dependencies {
  compile 'org.springframework:spring-orm'
  compile 'org.hibernate:hibernate-core'
}
于 2015-11-04T22:29:13.970 に答える