9

私は春のブートプロジェクトのビルドで単純なシナリオを達成しようとしています。依存関係を除外し、環境に応じて戦争や瓶をパッケージ化します。MavenプロフィールはGradleに相当します

ですから、例えば、環境dev用デベロッパーツールやパッケージの瓶が含まれ、prodパッケージ戦争など

私はそれはもう、XMLベースの構成ではありません知っていると私は基本的に私のbuild.gradleにif文を書くことができますが、これを達成するための推奨方法がありますか?

一般的な依存関係を宣言し、複数のビルドファイルを作成するのではなく、1つのファイルでそれらを参照できますか?

ビルドターゲット環境に基づいてビルド構成を変更することはベストプラクティスですか?

答えて

6
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 } 
0

私のバージョン(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 
} 
関連する問題