我試圖在我的spring引導項目構建中實現一個簡單的場景:包括/排除依賴關係和根據環境打包war或jar。Maven profile相當於Gradle
因此,例如,對環境dev
包括devtools和jar包,用於prod
包戰爭等
我知道這是不是基於XML的配置了,我基本上可以寫,如果我的build.gradle聲明,但有沒有推薦的方法來實現這一目標?
我可以聲明一些常見的依賴關係,並將它們引用到單個文件中而不是創建多個構建文件嗎?
基於構建目標環境,是否有更改構建配置的最佳實踐?
我試圖在我的spring引導項目構建中實現一個簡單的場景:包括/排除依賴關係和根據環境打包war或jar。Maven profile相當於Gradle
因此,例如,對環境dev
包括devtools和jar包,用於prod
包戰爭等
我知道這是不是基於XML的配置了,我基本上可以寫,如果我的build.gradle聲明,但有沒有推薦的方法來實現這一目標?
我可以聲明一些常見的依賴關係,並將它們引用到單個文件中而不是創建多個構建文件嗎?
基於構建目標環境,是否有更改構建配置的最佳實踐?
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's answer啓發):
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 = project.hasProperty('env') ? project.env : 'dev'
}
dependencies project."${env}Dependencies"
dependencies project.commonDependencies
if (env == 'dev') {
war.enabled = false
}