【问题标题】:maven parent pom dependency-management in gradlegradle中的maven父pom依赖管理
【发布时间】:2012-12-27 20:56:27
【问题描述】:

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

然后我有多个项目(项目 A 和项目 B)将这个 pom 设置为父 pom。如果在项目A中我想使用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 的依赖管理部分中。

【问题讨论】:

标签: maven gradle dependency-management


【解决方案1】:

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'
}

【讨论】:

    猜你喜欢
    • 2019-10-16
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2013-06-15
    • 2022-12-06
    相关资源
    最近更新 更多