在多项目gradle构建中更改依赖项版本号

时间:2017-11-18 16:06:42

标签: maven gradle publish ivy artifacts

我有一个多模块gradle项目,其中包含coreclientclient取决于core,其声明如下:

dependencies {
    compile project(':core')
}

如果我将coreclient发布到Ivy或Maven,则从clientcore的依赖关系会使用当前为core定义的确切版本(例如1.0.0)。

有没有办法改变它?让我们说core保证在次要版本之间兼容。因此,不是1.0.0我喜欢依赖于版本1.+

1 个答案:

答案 0 :(得分:0)

为了替换生成的pom.xml中的版本,我创建了一个辅助函数:

// helper function to replace dependency version in maven pom.xml
def replaceDependencyVersion(root, groupId, artifactId, version) {
    // replace version
    root.dependencies.dependency.findAll() { node ->
        node.groupId.text() == groupId && node.artifactId.text() == artifactId
    }.each() { node ->
        node.version*.value = version
    }
}

然后可以在发布中使用此功能来替换版本号:

// publishing
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            pom.withXml {
                replaceDependencyVersion(asNode(), 'com.test', 'core', '1.+')
            }
        }
    }
}