Gradle 基于构建变量的java项目梯度依赖关系管理

Gradle 基于构建变量的java项目梯度依赖关系管理,gradle,Gradle,我正在使用gradle构建一个JavaSpring项目。我想做的是: 如果生成目标为dev或未指定,请使用依赖项 编译(“org.hsqldb:hsqldb”) 如果构建目标是prod或qa,则使用依赖关系 编译(“mysql:mysql连接器java:5.1.31”) 我不知道在格拉德尔该怎么做。第一件事是如何将构建类型变量传递给构建脚本。第二件事是如何基于变量编写条件依赖代码?提前感谢。build.gradle是一个Groovy文件,因此您可以使用if语句动态更改依赖项,如下所示: depe

我正在使用gradle构建一个JavaSpring项目。我想做的是:

如果生成目标为dev或未指定,请使用依赖项

编译(“org.hsqldb:hsqldb”)

如果构建目标是prod或qa,则使用依赖关系

编译(“mysql:mysql连接器java:5.1.31”)


我不知道在格拉德尔该怎么做。第一件事是如何将构建类型变量传递给构建脚本。第二件事是如何基于变量编写条件依赖代码?提前感谢。

build.gradle
是一个Groovy文件,因此您可以使用
if
语句动态更改依赖项,如下所示:

dependencies {
   // other dependencies

   if (someFlag) {
       compile("org.hsqldb:hsqldb")
   } else {
       compile("mysql:mysql-connector-java:5.1.31")
   }
}
要配置类似于此的内容,可以使用:

现在,当gradle与
-PtargetEnv=qa
-PtargetEnv=prod
、hsqldb一起运行时,将使用mysql依赖关系,用于未指定或未设置
targetEnv
的情况,最后,如果传递了未知的环境名称,将引发异常

dependencies {
   // other dependencies

    if (!project.hasProperty("targetEnv") || targetEnv == "dev") {
        compile("org.hsqldb:hsqldb")
    } else if (targetEnv == "prod" || targetEnv == "qa") {
        compile("mysql:mysql-connector-java:5.1.31")
    } else {
        throw new InvalidUserDataException("Unknown target environment '$targetEnv'")
    }
}