2017-09-18 16 views
1

私はgradle 4.1を使用しています 私のプロジェクトには5つのモジュールがあります。ビルドした後、各モジュールに5つのjarファイルを生成します。 私の目標は、zipアーカイブを作成し、それをartifactory serverにアップロードすることです。 他のモジュールのビルドが完了したときにのみjarを使ってzipデプロイメントのアーティファクトを生成できます。 libsディレクトリからjarをコピーするのがわかりますが、私はプロジェクトの全体的なビルドの後にこれを行う方法を探しています。 dependsOnでいくつかの例を見ましたが、うまく動作していないようです。ここ は、私が持っているものです。プロジェクトを配布プラグインでビルドした後でgradleタスクを実行

apply plugin: 'distribution' 

distributions { 
    main { 
    baseName = 'b-deploy' 
    contents { 
     from { "b-model/build/libs/b-model-${version}.jar" } 
     from { "b-wsdl/build/libs/b-wsdl-${version}.jar" } 
     from { "b-common/build/libs/b-common-${version}.jar" } 
     from { "b-rest/build/libs/b-rest-${version}.jar" } 
     from { "b-soap/build/libs/b-soap-${version}.jar" } 
    } 
    } 
} 

答えて

2

は、すべてのあなたの配置可能ファイルを保持するために、カスタム設定を作成します。

configurations { 
    deployable { 
     transitive = false 
    } 
} 

は、あなたがそのコンフィギュレーション内にZIPに必要なすべてを収集します。あなたがそれらを必要とする場合は、ここでサードパーティのライブラリを追加する方法注意:

dependencies { 
    deployable project(path: ':a') 
    deployable project(path: ':b') 
    deployable 'com.google.guava:guava:22.0' 
} 

すると、そのZIP用のタスクを作成します。

task deployableZIP(type: Zip) { 
    dependsOn configurations.deployable 

    baseName = 'gradle-deploy' 
    destinationDir = buildDir 

    configurations.deployable.collect { 
     from it 
    } 
} 

最後に、公開を設定します。

publishing { 
    publications { 
     main(MavenPublication) { 
      artifact source: deployableZIP, extension: 'zip' 
     } 
    } 
} 

このトリックを行う必要があります。

+0

ありがとう@madhead。 'deployable'はプラグインと一緒に来ますか? – rastaman

+1

ここでは最初の手順としてカスタム設定として作成します。名前は任意です。 – madhead

+0

カスタム設定を作成するとき、私は彼女を 'extendedFrom'で他のものから正しいものにする必要がありますか?これは不要ですか? – rastaman

1

たぶん、あなたはfinalizedByを使用することができます?。だからあなたの例では

build.finalizedBy(distributions) 
関連する問題