我写了一个build.gradle脚本来自动从给定的URL下载hazelcast。之后文件被解压缩,只有mancenter.war和origin zip文件保留在目标目录中。稍后在这个war文件被引用为jetty run。
尽管如此,虽然我为我的两个任务定义了outputs.file,但是当我执行gradle clean时,文件不会被清除。因此,当我执行gradle clean时,我想知道我必须做什么才能删除下载和解压缩的文件。这是我的剧本:
不过,如果您有任何建议如何增强脚本,请不要犹豫告诉我!apply plugin: "application"
dependencies {
compile "org.eclipse.jetty:jetty-webapp:${jettyVersion}"
compile "org.eclipse.jetty:jetty-jsp:${jettyVersion}"
}
ext {
distDir = "${projectDir}/dist"
downloadUrl = "http://download.hazelcast.com/download.jsp?version=hazelcast-${hazelcastVersion}"
zipFilePath = "${distDir}/hazelcast-${hazelcastVersion}.zip"
warFilePath = "${distDir}/mancenter-${hazelcastVersion}.war"
mainClass = "mancenter.MancenterBootstrap"
}
task downloadZip() {
outputs.file file(zipFilePath)
logging.setLevel(LogLevel.INFO)
doLast {
ant.get(src: downloadUrl, dest: zipFilePath)
}
}
task extractWar(dependsOn: downloadZip) {
outputs.file file(warFilePath)
logging.setLevel(LogLevel.INFO)
doLast {
ant.unzip(src: zipFilePath, dest: distDir, overwrite:"true") {
patternset( ) {
include( name: '**/mancenter*.war' )
}
mapper(type:"flatten")
}
}
}
task startMancenter(dependsOn: extractWar, type: JavaExec) {
main mainClass
classpath = sourceSets.main.runtimeClasspath
args warFilePath
}
更新
我找到了这个link,它描述了在调用clean任务时如何提供删除的其他位置。基本上你可以做某事。像这样:
clean{
delete zipFilePath
delete warFilePath
}
答案 0 :(得分:5)
我从源代码中得到确认,clean任务只是删除了build目录。它假定您要清理所有内容,并且所有任务输出都在此构建目录中的某个位置。
因此,最简单和最佳的做法是仅在构建目录下的某处存储输出。
答案 1 :(得分:3)
您可以像这样添加要清理的任务:
clean.dependsOn(cleanExtractWar)
clean.dependsOn(cleanDownloadZip)
cleanTaskName是一个虚拟任务,将清除TaskName的所有输出。