我正在使用gradle来构建一个java spring项目。我想做的是:
如果构建目标是dev或not dev,请使用dependency
编译(" org.hsqldb:HSQLDB&#34)
如果构建目标是prod或qa,请使用依赖
编译(" MySQL的:MySQL的连接器的Java:5.1.31&#34)
我不知道如何在gradle中这样做。第一件事是如何将构建类型变量传递给构建脚本。第二件事是如何根据变量编写条件依赖代码?提前谢谢。
答案 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
的情况,以及如果传递了一些未知的环境名称,最终将抛出异常。