在Gradle中从外部文件声明依赖项

时间:2019-03-07 19:56:18

标签: gradle dependency-management gradle-plugin

我正在寻找一种在Gradle 5.2的外部文件或主构建文件中强制实施子项目的所有依赖版本的方法。这将类似于Java-Platform插件中的新约束功能,但是据我所知,这不仅需要在单独的文件中声明,而且还需要在单独的项目中声明(然后,该声明仅会容纳该项目的构建文件)。

有没有办法做到这一点?到目前为止,我已经成功使用Java平台插件制作了PoC:

文件结构:

  1. 根 一种。平台 b。子项目1 C。子项目2

根构建文件:

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

请原谅语法。

1 个答案:

答案 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.