我有一个多模块gradle项目,其中包含core
和client
。 client
取决于core
,其声明如下:
dependencies {
compile project(':core')
}
如果我将core
和client
发布到Ivy或Maven,则从client
到core
的依赖关系会使用当前为core
定义的确切版本(例如1.0.0
)。
有没有办法改变它?让我们说core
保证在次要版本之间兼容。因此,不是1.0.0
我喜欢依赖于版本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.+')
}
}
}
}