基于Gradle文件中的配置文件的区分依赖性

时间:2019-04-02 16:40:01

标签: java spring spring-boot

我想根据不同的环境区分我的依赖关系。我没有获得正确的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')
   }}

1 个答案:

答案 0 :(得分:0)

您可以通过为每个配置文件使用build_[profile].gradle来进行不同的操作,其中 [profile] 是启动应用程序示例时作为参数传递的配置文件(通过 -P < / strong>):

./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,在那里您可以根据需要具有不同的依赖关系和配置。