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