Maven的档案相当于Gradle

我正在尝试在我的spring boot项目构建中实现一个简单的场景:包括/排除依赖项和打包war或jar,具体取决于环境。

因此,例如,对于环境dev包括devtools和包jar,用于prod包战等。

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

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

是否有基于构建目标环境更改构建配置的最佳实践?

 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 } 

我的版本(灵感来自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 }