Maven 配置文件相当于 Gradle

我试图在我的Spring Boot项目构建中实现一个简单的场景:包括/排除依赖项,并根据环境打包战争或jar。

例如,对于环境,包括devtools和pack jar,用于软件包战争等。devprod

我知道它不再是基于XML的配置,我基本上可以在我的build.gradle中编写if语句,但是有没有推荐的方法来实现这一点?

我是否可以声明一些常见的依赖项并在单个文件中引用它们,而不是创建多个构建文件?

是否有基于生成目标环境更改生成配置的最佳做法?


答案 1
ext {
    devDependencies = ['org.foo:dep1:1.0', 'org.foo:dep2:1.0']
    prodDependencies = ['org.foo:dep3:1.0', 'org.foo:dep4:1.0']
    isProd = System.properties['env'] == 'prod'
    isDev = System.properties['env'] == 'dev'
}

apply plugin: 'java'

dependencies {
    compile 'org.foo:common:1.0'
    if (isProd) {
       compile prodDependencies
    }
    if (isDev) {
       compile devDependencies
    }
}

if (isDev) tasks.withType(War).all { it.enabled = false }

答案 2

我的版本(灵感来自Lance Java的答案):

apply plugin: 'war'

ext {
  devDependencies = {
    compile 'org.foo:dep1:1.0', {
      exclude module: 'submodule'
    }
    runtime 'org.foo:dep2:1.0'
  }

  prodDependencies = {
    compile 'org.foo:dep1:1.1'
  }

  commonDependencies = {
    compileOnly 'javax.servlet:javax.servlet-api:3.0.1'
  }

  env = findProperty('env') ?: 'dev'
}

dependencies project."${env}Dependencies"
dependencies project.commonDependencies

if (env == 'dev') {
  war.enabled = false
}

推荐