2015-07-20 2 views
0

У меня есть рабочий файл построения градиента, который создает файл jar в каталоге/build/libs. Это прекрасно работает. Тем не менее, я хочу добавить задачу, которая принимает этот файл jar и упаковывает его в существующий файл войны (в каталог WEB-INF/libs внутри). Как добавить эту задачу?Gradle: Как добавить выходной файл jar в существующий файл войны

+0

Для блага вашего собственного здравого смысла, не делайте этого! Чтобы изменить каталог WEB-INF/libs в войне, необходимо изменить зависимости уже созданного веб-приложения, что потенциально может затруднить поиск и устранение ошибок в зависимости от того, как вы изменяете эту банку. Гораздо безопаснее (и проще) объявить свою банку как зависимость от этой войны и перестроить войну в случае, если ваша банка изменит что-то важное. Таким образом, если вы, барабан зависимости, меняетесь таким образом, чтобы разбить войну, вы точно узнаете, что сломало до развертывания войны. –

+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 
Смежные вопросы