首页 > 解决方案 > 根据 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')
   }}

标签: javaspringspring-boot

解决方案


您可以通过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.gradlebuild_local.gradle, 你可以根据需要有不同的依赖项和配置。


推荐阅读