13

我正在使用 war 插件为我的 gradle 项目生成一个简单的 .WAR 文件。我想知道如何配置 gradle 以便我可以创建 4 个具有不同依赖项的不同 .WAR 文件。

我已经使用进入发行版所需的 jar 配置了依赖项编译配置。src 中的任何代码都不依赖于其中的几个 jar,但我想知道如何配置项目以创建

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

我配置了哪些任务以使生成的工件使用特定的依赖配置?

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

我下面的示例创建了一个仅包含一个 jar 的 war 文件,但我希望使用不同的 jar 生成 5 个不同的 .war 文件。

构建.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 文件。这是实现这一目标的一种方法:

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类型的增强任务来创建三个不同的 WAR 文件。它假定您仍然希望将已编译的源文件放在WEB-INF/classesWAR 文件中,因此我没有将其从类路径中删除。分发最终在目录中build/dist。该任务createDists创建了所有这些。

于 2012-10-29T17:44:27.577 回答