2015-07-20 81 views
0

我有一個工作的gradle構建文件,它將一個jar文件構建到/ build/libs目錄中。這工作正常。但是,我想添加一個任務,它接受這個jar文件並將其打包到一個現有的war文件中(進入WEB-INF/libs目錄裏面)。我如何添加此任務?Gradle:如何將輸出jar文件添加到現有war文件中

+0

爲了你自己的理智的好,不這樣做!修改war的WEB-INF/libs目錄是改變已經構建的web應用程序的依賴關係,這可能會讓你很難找到並解決錯誤,這取決於你如何改變jar。當你的jar改變了一些重要的事情時,聲明你的jar是該戰爭的依賴並重建戰爭更安全(也更容易)。這樣,如果您的依賴關係jar確實改變了打破戰爭的方式,那麼在部署戰爭之前,您將確切地知道發生了什麼。 –

+0

我明白了這一點,並瞭解其中的含義。在這種情況下,它通常更安全,我不想重建現有的戰爭。 – cwittah

回答

0

我這樣做是這樣的:

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