0
我有一个工作的gradle构建文件,它将一个jar文件构建到/ build/libs目录中。这工作正常。但是,我想添加一个任务,它接受这个jar文件并将其打包到一个现有的war文件中(进入WEB-INF/libs目录里面)。我如何添加此任务?Gradle:如何将输出jar文件添加到现有war文件中
我有一个工作的gradle构建文件,它将一个jar文件构建到/ build/libs目录中。这工作正常。但是,我想添加一个任务,它接受这个jar文件并将其打包到一个现有的war文件中(进入WEB-INF/libs目录里面)。我如何添加此任务?Gradle:如何将输出jar文件添加到现有war文件中
我这样做是这样的:
def originalWar = file("../release/${sesame_version}/war/openrdf-sesame.war")
def outputDir = "./build/war"
def outputDirSesame = "$outputDir/sesame"
task extractWar(type: Copy) {
from zipTree(originalWar)
into "$outputDirSesame"
outputs.upToDateWhen { false }
}
task copyJar(type: Copy, dependsOn: extractWar) {
from "./build/libs"
into "$outputDirSesame/WEB-INF/lib"
outputs.upToDateWhen { false }
}
task buildWar(type: Zip, dependsOn: copyJar) {
archiveName "openrdf-sesame.war"
destinationDir file("$outputDir")
from "$outputDirSesame"
outputs.upToDateWhen { false }
}
build.dependsOn buildWar
为了你自己的理智的好,不这样做!修改war的WEB-INF/libs目录是改变已经构建的web应用程序的依赖关系,这可能会让你很难找到并解决错误,这取决于你如何改变jar。当你的jar改变了一些重要的事情时,声明你的jar是该战争的依赖并重建战争更安全(也更容易)。这样,如果您的依赖关系jar确实改变了打破战争的方式,那么在部署战争之前,您将确切地知道发生了什么。 –
我明白了这一点,并了解其中的含义。在这种情况下,它通常更安全,我不想重建现有的战争。 – cwittah