首页 > 解决方案 > 在 Gradle 中从外部文件声明依赖项

问题描述

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

有没有办法做到这一点?到目前为止,我已经成功地使用 java-platform 插件制作了一个 PoC,如下所示:

文件结构:

  1. 根 A. 平台 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'
}

我想要的是类似的东西......

根/dependencies.versions:

dependency1.version1
dependency2.version3
{etc.}

根/build.gradle:

dependencies {
    constraints {
        for { line in dependencies.versions -> 
            api 'line'
        }
    }
}

请原谅语法。

标签: gradledependency-managementgradle-plugin

解决方案


我没有找到删除单独平台项目要求的方法,但是通过属性文件读取约束很简单。


推荐阅读