13

私はwarプラグインを使用して、プロジェクトの単純な.WARファイルをgradleで生成しています。依存関係の異なる4つの異なる.WARファイルを作成できるようにgradleを構成する方法を知りたいです。

ディストリビューションに入るのに必要なjarを使用して、依存関係のコンパイル構成を構成しました。srcのコードはこれらのjarのいくつかに依存していませんが、作成するプロジェクトを構成する方法を知りたいです

  • 依存関係グラフのすべてのjarを含むstandard.WARファイル(使用されていなくても-それは問題ありません-私は何かをテストしています)
  • qas.jarのみを含む別のstandard-qas-only.WARファイル
  • qas.jarとlog4jを含む別のstandard-qas-log4j.WARファイル

生成されたアーティファクトに特定の依存関係構成を使用させるために、どのタスクを構成しますか?

参考:この場合、コンパイルに必要なjarはqas.jarのみです。

以下の私の例では、1つのjarのみを含むwarファイルを作成しますが、異なるjarで5つの異なる.warファイルを生成したいと思います。

build.gradle

apply plugin: 'java'
apply plugin: 'war'

dependencies {
    compile files('/lib/qas.jar','/lib/axis1-1.4.jar','/lib/axis2-kernel-1.3.jar','/lib/dom4j-1.6.1.jar','/lib/log4j-1.2.14.jar')
    providedCompile files('/lib/j2ee-1.4.03.jar')
}

war {
    classpath = ['/lib/qas.jar']
}

task dist(dependsOn: 'war') << {
    copy {
        from war.archivePath
        into "dist/"
    }
}
4

1 に答える 1

20

実際に構築しようとしているWARディストリビューションの数について少し混乱しました。これを簡単に変更して、追加のWARファイルを作成できます。これを実現するための1つのアプローチは次のとおりです。

task createStandardWar(type: War, dependsOn: classes) {
    baseName = 'standard'
    destinationDir = file("$buildDir/dist")
}

task createStandardWarQasOnly(type: War, dependsOn: classes) {
    baseName = 'standard-qas-only'
    destinationDir = file("$buildDir/dist")
    classpath = war.classpath.minus(files('/lib/axis1-1.4.jar','/lib/axis2-kernel-1.3.jar','/lib/dom4j-1.6.1.jar','/lib/log4j-1.2.14.jar'))
}

task createStandardWarQasAndLog4J(type: War, dependsOn: classes) {
    baseName = 'standard-qas-log4j'
    destinationDir = file("$buildDir/dist")
    classpath = war.classpath.minus(files('/lib/axis1-1.4.jar','/lib/axis2-kernel-1.3.jar','/lib/dom4j-1.6.1.jar'))
}

task createDists(dependsOn: [createStandardWar, createStandardWarQasOnly, createStandardWarQasAndLog4J])

このビルドスクリプトの抜粋は、タイプWarの拡張タスクを宣言することにより、3つの異なるWARファイルを作成します。コンパイルされたソースファイルをWARファイル内に置きたいと想定しているWEB-INF/classesため、クラスパスから削除しませんでした。ディストリビューションは最終的にディレクトリに配置されbuild/distます。タスクcreateDistsはそれらすべてを作成します。

于 2012-10-29T17:44:27.577 に答える