我正在寻找一种在Gradle 5.2的外部文件或主构建文件中强制实施子项目的所有依赖版本的方法。这将类似于Java-Platform插件中的新约束功能,但是据我所知,这不仅需要在单独的文件中声明,而且还需要在单独的项目中声明(然后,该声明仅会容纳该项目的构建文件)。
有没有办法做到这一点?到目前为止,我已经成功使用Java平台插件制作了PoC:
文件结构:
根构建文件:
project.ext {
javaProjectList = subprojects.findAll{
it.name != 'platform'
}
}
configure(project.javaProjectList) {
apply plugin: 'java'
}
subprojects{
repositories {
jcenter()
}
}
平台构建文件:
plugins {
id 'java-platform'
}
dependencies {
constraints {
api 'commons-httpclient:commons-httpclient:3.1'
runtime 'org.postgresql:postgresql:42.2.5'
}
}
子项目1(和2):
dependencies {
compile platform(project(':platform'))
compile 'commons-httpclient:commons-httpclient'
}
我想要的是类似...
root / dependencies.versions:
dependency1.version1
dependency2.version3
{etc.}
root / build.gradle:
dependencies {
constraints {
for { line in dependencies.versions ->
api 'line'
}
}
}
请原谅语法。
答案 0 :(得分:0)
I didn't find a way to remove the requirement of a separate Platform project, but it was simple enough to read in the constraints via a properties file.