基于java项目的构建变体的Gradle依赖管理

时间:2015-06-21 20:31:00

标签: gradle

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

如果构建目标是dev或not dev,请使用dependency

编译(" org.hsqldb:HSQLDB&#34)

如果构建目标是prod或qa,请使用依赖

编译(" MySQL的:MySQL的连接器的Java:5.1.31&#34)

我不知道如何在gradle中这样做。第一件事是如何将构建类型变量传递给构建脚本。第二件事是如何根据变量编写条件依赖代码?提前谢谢。

1 个答案:

答案 0 :(得分:3)

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

dependencies {
   // other dependencies

   if (someFlag) {
       compile("org.hsqldb:hsqldb")
   } else {
       compile("mysql:mysql-connector-java:5.1.31")
   }
}

要配置类似这样的内容,可以使用project properties

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

现在,当使用-PtargetEnv=qa-PtargetEnv=prod,hsqldb运行gradle时,将使用mysql依赖项 - 适用于未指定targetEnv或设置为dev的情况,以及如果传递了一些未知的环境名称,最终将抛出异常。