2016-11-21 6 views
0

GradleとそのShadowJarプラグインを使用して、アプリケーション用のファットjarを作成します。これは2つのコンテキストのいずれかにデプロイされます。ビルドパラメータでグライルランタイムの依存関係を制御する

環境は、依存関係A、B、C(およびこれらのすべての推移的な依存関係)を提供します。これらのクラスは、私のファット・ジャーの一部であってはなりません。

環境は依存関係AとBのみを提供し、Cとそのすべての推移依存関係が私の太ったjarファイルにバンドルされていることを保証する必要があります。

どのように私のGradleビルドファイルでこの動作を定義できますか?私は最良の方法は、runtime.excludeプロパティを何とかビルドターゲットやコマンドラインパラメータに基づいて調整することだと思います。

答えて

0

だから私はあなたの2つの構成を探していると思います。

apply plugin: 'groovy' 

repositories { 
    jcenter() 
} 

dependencies { 
    compile localGroovy() 
    compile 'org.slf4j:slf4j-api:1.7.21' 
    compileOnly group: 'com.google.guava', name: 'guava', version: '20.0' 
    testCompile 'junit:junit:4.12' 
} 

task fatJar(type: Jar) { 
    from sourceSets.main.output, configurations.compile 
    baseName = "$project.name-fat" 
} 

jar.dependsOn fatJar 

今、私たちは

$ ./gradlew clean build 
Configuration on demand is an incubating feature. 
:clean 
:compileJava UP-TO-DATE 
:compileGroovy 
:processResources UP-TO-DATE 
:classes 
:fatJar 
:jar 
:assemble 
:compileTestJava UP-TO-DATE 
:compileTestGroovy UP-TO-DATE 
:processTestResources UP-TO-DATE 
:testClasses UP-TO-DATE 
:test UP-TO-DATE 
:check UP-TO-DATE 
:build 

BUILD SUCCESSFUL 

Total time: 4.997 secs 

に展開に関心のある各コンテキストのjarファイルを作成することができ、今私たちが

$ unzip build/libs/q40727142-fat.jar -d build/libs/included 
Archive: build/libs/q40727142-fat.jar 
    creating: build/libs/included/META-INF/ 
    inflating: build/libs/included/META-INF/MANIFEST.MF 
    creating: build/libs/included/com/ 
    creating: build/libs/included/com/jbirdvegas/ 
    creating: build/libs/included/com/jbirdvegas/q40727142/ 
    inflating: build/libs/included/com/jbirdvegas/q40727142/Hello.class 
    inflating: build/libs/included/groovy-all-2.4.7.jar 
    inflating: build/libs/included/slf4j-api-1.7.21.jar 

脂肪瓶を持っていることを確認することができますし、元を確認することができます構成には、提供される予定の瓶がありません。

$ unzip build/libs/q40727142.jar -d build/libs/notIncluded 
Archive: build/libs/q40727142.jar 
    creating: build/libs/notIncluded/META-INF/ 
    inflating: build/libs/notIncluded/META-INF/MANIFEST.MF 
    creating: build/libs/notIncluded/com/ 
    creating: build/libs/notIncluded/com/jbirdvegas/ 
    creating: build/libs/notIncluded/com/jbirdvegas/q40727142/ 
    inflating: build/libs/notIncluded/com/jbirdvegas/q40727142/Hello.class 
0

私はこのようになりますビルドファイルと一緒に行きました:

subprojects { 
    apply plugin: "java" 
    apply plugin: "scala" 
    version = "1.0-SNAPSHOT" 
    group = "com.example.projects" 
    ext.deployEnv = "Env1" 

    if (project.hasProperty("deployEnv")) { 
     ext.deployEnv= project.property("deployEnv") 
    } 
} 

project(":myproject") { 
    configurations { 
     runtime.exclude group: 'A' 
     runtime.exclude group: 'B' 
    } 

    if (ext.deployEnv == 'Env0') { 
     configurations { 
      runtime.exclude group:'C' 
     } 
    } 
} 

それは、ビルドファイルに最小限の変更で、私が欲しいものを行います。

関連する問題