1

在 Maven 中,您可以在依赖管理部分声明依赖版本。假设我有这样的 pom 来管理我所有项目的某些库的默认版本(所以我不必一遍又一遍地重复它们,这样我就可以确保我所有项目的一致性)。

然后我有多个项目(项目 A 和项目 B)将这个 pom 设置为父 pom。如果在项目AI中要使用spring.jar,并且我在A的父pom的依赖管理中定义了spring.jar,我就不用再在A的pom中定义spring版本,我只要定义它依赖spring即可。到目前为止还可以,如何在 gradle 中也很简单(http://stackoverflow.com/questions/9547170)

我想知道的是这种情况:
想象一下spring 3.0依赖于hibernate 3.0。在 A 的父 pom 中,我已经在 3.1 版本的依赖管理部分定义了休眠依赖,但没有在那里定义 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 回答