java - 根据 Gradle 文件中的配置文件区分依赖关系
问题描述
我想根据不同的环境来区分我的依赖关系。我没有得到正确的 env 值以及类别依赖的正确条件。
def profile = project.hasProperty("spring.profiles.active") ?
project.property("spring.profiles.active") :
System.getProperty("spring.profiles.active", 'local')
bootRun {
systemProperty "spring.profiles.active", profile
}
我希望输出如下所示,但配置文件变量没有得到正确的配置文件值
dependencies{
if(profile == "dev"){
compile('com.oracle:ojdbc6:+')
}
if(profile == "prod"){
compile('commons-dbcp:commons-dbcp:1.4')
}}
解决方案
您可以通过build_[profile].gradle
对每个配置文件进行不同的处理,其中[profile]是您在启动应用程序示例时作为参数传递的配置文件(通过-P):
./gradlew -Pprod bootRun
因此,假设您有 2 个环境产品和本地环境,build.gradle
您将拥有:
def currentProfile;
if (project.hasProperty('prod')) {
currentProfile = 'production';
apply from: rootProject.file('gradle/build_prod.gradle');
} else if (project.hasProperty('local')) {
currentProfile = 'local';
apply from: rootProject.file('gradle/build_local.gradle');
} else {
currentProfile = 'default profile';
apply from: rootProject.file('gradle/build_default.gradle');
}
println 'Current profile: "' + currentProfile + '"
您还应该有 2 个 gradle 文件;build_prod.gradle
和build_local.gradle
, 你可以根据需要有不同的依赖项和配置。
推荐阅读
- arrays - 如何将数组的元素分配给 MongoDB 文档中的新键
- java - 使用 Java(JDBC) 连接 Azure 数据库失败
- javascript - 重新加载时如何使喜欢的数量留在页面上
- c++ - 可变模板类 - 0 长度包构造函数冲突
- recursion - anxn矩阵递归行列式算法的运行时间和空间复杂度
- c# - 如何使用像类型这样的字符串?
- c# - 强制派生类具有带有签名的构造函数
- javascript - 在 Javascript / Chrome 浏览器中的匿名函数中使用它会给出错误:无法读取未定义的属性“localeCompare”
- python - 如何在 NLP 的 TweetTokenizer 步骤中删除标点符号和数字?
- php - 如何在同一个 src 属性中显示音频和图像