如果有人知道我在做什么错在这里,我会很感激。第一次从临时文件夹中复制文件的Gradle复制任务
我有一个运行这样的任务的构建文件。
任务1(unpackWar):解压缩war文件到临时文件夹
任务2(copyWarFilesToWebContent):将文件复制到WebContent文件夹一些排除
任务3(copyRequiredJarFilesToWebContent):解压几个罐子从温度/ WEB-INF/lib目录到TempJarDir文件
任务4(explodeProductJars):复制文件,我们从TempJarDir要WebContent文件夹
有运行每个T的一个准备工作这些任务使用dependsOn,并且我已经将mustRunAfter命令添加到每个任务,以便按顺序执行。还为每个任务设置了ToDateWhen = false。
什么似乎发生的是,任务1运行良好,解压缩战争。任务2然后使用Temp中的文件并正确添加所需的文件到WebContent。
任务3和任务4总是回到最新状态,因为在指定的目录中似乎没有要使用的文件。
如果我在Temp文件夹存在时重新运行准备,任务3和4运行正常。
我不确定这是由于fileTree的工作原理或者我做错了什么。大约一周前我已经选择了Gradle,并且仍然在努力解决它。
感谢您的帮助。
任务是这样的:
task prepare(dependsOn: ['unpackWar', 'copyWarFilesToWebContent', 'copyRequiredJarFilesToWebContent'])
prepare.outputs.upToDateWhen {false}
task unpackWar(type: Copy) {
description = 'unzips the war'
outputs.upToDateWhen { false }
def warFile = file(warFileLocation)
from zipTree(warFile)
into "Temp"
}
task copyWarFilesToWebContent(type: Copy) {
mustRunAfter unpackWar
description = 'Moves files from Temp to WebContent Folder'
outputs.upToDateWhen { false }
from ('Temp') {
exclude "**/*.class"
}
into 'WebContent'
}
task explodeProductJars(type: Copy) {
outputs.upToDateWhen { false }
FileTree tree = fileTree(dir: 'Temp/WEB-INF/lib', includes: ['application*-SNAPSHOT-resources.jar', 'services*-SNAPSHOT-resources.jar'])
tree.each {File file ->
from zipTree(file)
into "TempJarDir"
}
}
task copyRequiredJarFilesToWebContent(type: Copy, dependsOn: explodeProductJars) {
mustRunAfter copyWarFilesToWebContent
outputs.upToDateWhen { false }
from ("TempJarDir/META-INF/resources") {
include '**/*.xml'
}
into "WebContent/WEB-INF"
}
我感觉它的东西与文件树做的,但不知道究竟什么发生。
你有没有考虑过使用'--debug'或'--info'来运行gradle任务来看看有什么关系?也许在你的问题中包含日志? – frhd
我用--debug --info和--stacktrace运行。这些信息有点神秘,因为我记得它说没有任何文件可以处理或者达到某种程度。戴维斯的回答如下,澄清了为什么它没有看到文件。我相信它是因为当我运行任务时,配置阶段同时处理每个任务,所以Temp文件夹不存在,这意味着任务被标记为最新。打开纠正这个虽然 – Predz