如何从gradle中的目录创建war文件
我正在编写一个任务来解压缩war文件,删除一些JAR,然后从提取的文件夹中创建一个war如何从gradle中的目录创建war文件,gradle,war,Gradle,War,我正在编写一个任务来解压缩war文件,删除一些JAR,然后从提取的文件夹中创建一个war task unzipWar(type: Copy){ println 'unzipping the war' def warFile = file("${buildDir}/temp/libs/webapps/service-app.war") def warOutputDir = file("$buildDir/wartemp") from zipTree(warFile)
task unzipWar(type: Copy){
println 'unzipping the war'
def warFile = file("${buildDir}/temp/libs/webapps/service-app.war")
def warOutputDir = file("$buildDir/wartemp")
from zipTree(warFile)
into warOutputDir
}
task deleteJars(type: Delete){
println 'deleting the logging jars'
file("$buildDir/wartemp/WEB-INF/lib/slf4j-api-1.7.5.jar").delete();
file("$buildDir/wartemp/WEB-INF/lib/logback-classic-1.1.7.jar").delete();
file("$buildDir/wartemp/WEB-INF/lib/logback-core-1.1.7.jar").delete();
}
task createWar(type: War){
destinationDir = file("$buildDir")
baseName = "service-app"
from "$buildDir/wartemp"
dependsOn deleteJars
}
出于某种原因,JAR没有被删除,war文件正在被创建,其中只包括
MANIFEST.MF
和其他内容。我错过了什么 首先要注意的是,您的createWar
任务依赖于deleteJars
任务,但deleteJars
不依赖于unzipWar
。似乎,如果您调用createWar
任务,它将不会调用unzipWar
任务,并且不会有任何内容可复制或删除。请注意,您有一个MANIFEST.MF
文件,因为它是由createWar
任务生成的
第二件事是,您试图在构建的配置阶段删除一些文件,尽管您的unzipWar
将在执行阶段完成它的工作。因此,您的删除任务将尝试在解压之前删除这些文件。您可以阅读有关构建生命周期的内容。因此,您需要重写deleteJars
任务,以正确配置它。看一看,它有一个例子如何做到这一点
所以如果你打电话给
file("$buildDir/wartemp/WEB-INF/lib/slf4j-api-1.7.5.jar").delete();
它尝试在调用时删除您的文件,因为它不是任务属性,而是配置中的操作
要配置它,您必须执行以下操作:
task deleteJars(type: Delete) {
delete "$buildDir/wartemp/WEB-INF/lib/slf4j-api-1.7.5.jar", "$buildDir/wartemp/WEB-INF/lib/logback-classic-1.1.7.jar", "$buildDir/wartemp/WEB-INF/lib/logback-core-1.1.7.jar"
}