在Gradle中创建具有不同依赖项的多个.WAR文件

Sha*_*n F 11 groovy dependency-management gradle

我正在使用war插件为gradle中的项目生成一个简单的.WAR文件.我想知道如何配置gradle,这样我就可以创建4个不同依赖关系的.WAR文件.

我已经使用进入分发所需的jar配置了依赖项编译配置.src中的代码都不依赖于几个这些jar,但我想知道如何配置要创建的项目

  • 包含依赖关系图中所有jar的standard.WAR文件(即使它们没有使用 - 没关系 - 我正在测试一些东西)
  • 另一个仅包含qas.jar的标准-qas-only.WAR文件
  • 另一个包含qas.jar和log4j的standard-qas-log4j.WAR文件

我配置哪些任务来生成工件使用特定的依赖关系配置?

仅供参考:在这种情况下,编译所需的唯一jar是qas.jar.

我的下面的例子创建了一个war文件,它只包含一个jar,但是我希望用不同的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/"
    }
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*hko 19

我对你实际尝试构建的WAR分布有多少感到困惑.您可以轻松修改它以创建其他WAR文件.这是实现这一目标的一种方法:

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])
Run Code Online (Sandbox Code Playgroud)

此构建脚本摘录通过声明War类型的增强任务来创建三个不同的WAR文件.它假定您仍然希望将已编译的源文件放在WEB-INF/classesWAR文件中,因此我没有将其从类路径中删除.分发最终在目录中build/dist.任务createDists创造了所有这些.