누군가 내가 잘못하고있는 것을 알고 있으면 감사히 생각합니다.지루한 복사 작업이 임시 폴더에서 파일을 처음으로 복사하지 않음
이와 같은 작업을 실행하는 빌드 파일이 있습니다.
작업 1 (unpackWar는) : Temp 폴더에 war 파일 압축을 풀고
작업 2 (copyWarFilesToWebContent) :
작업 3 (copyRequiredJarFilesToWebContent가) 일부 제외와 복사의 WebContent 폴더에 파일을 : 항아리의 몇 가지 압축을 풀고 TempJarDir에 온도/WEB-INF/lib 디렉토리의 파일
작업 4 (explodeProductJars) : 파일을 복사 우리는 폴더를 웹 콘텐츠에 TempJarDir에서 원하는
t의 각 실행하는 하나의 준비 작업이 있습니다dependsOn을 사용하여 작업을 수행하고 mustRunAfter 명령을 각 작업에 추가하여 순서대로 실행합니다. 또한 각 작업에 대해 upToDateWhen = false를 설정하십시오.
작업 1은 정상적으로 실행되고 전쟁을 압축 해제합니다. 그런 다음 Task 2는 Temp의 파일을 사용하고 WebContent에 필요한 파일을 올바르게 추가합니다.
작업 3과 작업 4는 지정된 디렉터리에서 작동 할 파일이 없기 때문에 항상 최신 날짜로 되돌아갑니다.
임시 폴더가있을 때 준비를 다시 실행하면 작업 3과 4가 올바르게 실행됩니다.
이것이 fileTree의 작동 방식 때문인지 또는 내가 잘못하고있는 것이 원인인지 확실하지 않습니다. 나는 약 1 주 전에 gradle을 집어 들었고 아직도 그걸 파악하고있다.
도움 주셔서 감사합니다.
작업은 다음과 같이 : 나는 fileTree와 함께 할 그 무언가를 느끼고 있지만 정확히 일이 일어나고 있는지 적이 없다
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를 사용하여 실행했습니다. 메시지는 내가 처리 할 파일이 없거나 그 정도까지는 없다는 것을 기억할 수 있다는 점에서 조금 비현실적이다. Davids는 왜 파일을 볼 수 없었는지 명확히 밝혀 냈습니다. 나는 그 작업을 실행할 때 구성 단계가 동시에 각 작업을 처리하므로 Temp 폴더가 존재하지 않아 작업이 최신 상태로 표시되었음을 의미합니다. 그래도이 문제를 해결하려면 – Predz