我正在使用war插件为gradle中的项目生成一个简单的.WAR文件。我想知道如何配置gradle,这样我就可以创建4个不同依赖关系的.WAR文件。
我已经使用进入分发所需的jar配置了依赖项编译配置。 src中的代码都不依赖于几个这些jar,但我想知道如何配置项目来创建
我配置哪些任务以使生成的工件使用特定的依赖关系配置?
仅供参考:在这种情况下,编译所需的唯一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/"
}
}
答案 0 :(得分:18)
我对你实际尝试构建的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文件。它假设您仍然希望将已编译的源文件放在WAR文件中的WEB-INF/classes
下,因此我没有将其从类路径中删除。分发最终在目录build/dist
中。任务createDists
创建了所有这些。