나는 gradle을 사용하고 백업 작업을 설정하는 데 비교적 익숙하다. 몇 가지 예가 있습니다. 먼저 목표를 설명하겠습니다.Gradle Copy Task 최신 결정
디렉토리에 여러 파일이 있습니다 ("데이터 디렉토리"라고 함). 이 데이터 디렉토리의 모든 파일 내용이 수정되면 "백업 위치"에 새 디렉토리를 만들고 데이터 디렉토리의 모든 파일을 방금 작성한 디렉토리에 복사하려고합니다. 생성 된 디렉토리의 이름은 현재 날짜와 시간을 포함합니다. 지금은 데이터 디렉토리에 하위 디렉토리가 없습니다.
"데이터 디렉토리"에 하나의 파일이 들어있을 때이 작업이 정상적으로 수행되었으므로이 파일의 이름을 변경하여 날짜를 포함 시켰습니다. 예 :
task copyDocs(type: Copy) {
from 'src/main/doc/testfile.html'
into 'build/target/doc'
rename { String fileName ->
def date = new Date();
date.format("YYYY-MM-dd--HH-mm-ss") + " " + fileName
}
}
필자가 원하는만큼 "copyDocs"작업을 실행할 수는 있지만 실제로 testfile.html의 내용을 수정 한 경우에만 새 파일을 작성합니다. 이제 이름을 바꾼 새 파일을 만드는 대신 새 디렉터리를 만들고 소스 파일을 파일로 복사합니다.
task copyDocs(type: Copy) {
def dateStr = (new Date()).format("YYYY-MM-dd--HH-mm-ss");
from 'src/main/doc/testfile.html'
into 'build/target/doc/' + dateStr
}
이
은 하지 작품은 정말 대단했다. 생성 된 디렉토리에 원하는 이름이 있지만 문제는 매번 작업을 실행할 때마다 새 디렉토리를 만들고이 파일이 수정되었는지 여부에 관계없이testfile.html
을 복사한다는 것입니다.
나는 이것이 '작업 입력'등과 관련이 있다는 것을 알고 있으며, 설정 단계와 초기화 단계를 설명하는 문서의 부분을 읽었습니다. 내가 찾지 못한 것은 복사 작업이 두 번째 경우에는 재실행해야하지만 첫 번째 경우에는 재실행 할 필요가 있다고 생각하는 이유를 이해할 수 있도록 충분히 구체적이지 않습니다.
간단히 말해 두 경우 모두 잠재적 인 출력 파일은 작업이 날짜/시간의 함수로 실행될 때마다 변경됩니다. 두 파일의 경우 입력 파일이 변경되지 않습니다. 그렇다면 두 번째 작업은 매번 다시 실행해야하지만 첫 번째 작업은 왜 다시 실행해야합니까? "grad"을 사용하여 왜 왜 그런지 알 수있는 간단한 방법이 있습니까?
시간과 도움을 주시면 감사하겠습니다. 효과적이고 현대적인 시스템처럼 보이기 때문에 gradle에 대해 더 많이 배우고 싶습니다.
문제의 중요한 부분을 다뤘 기 때문에이 대답을 수락합니다. 나는 gradle이 이것을 어떻게 결정하는지 더 분명히 알기를 바랍니다. 그리고 내부적으로는 분명히 확실 합니다만, 읽은 문서의 페이지 수에 대한 대답은 오기가 어려웠습니다.마지막으로 필자는 FileCopyDetails에 대한 문서를 불러 와야합니다. setPath()에 대한 설명서가 잘못 표시되어 파일을 포함하는 디렉토리를 변경하는 것이 아니라 파일의 전체 경로를 설정하는 데 사용됩니다. 이것을 발견 한 것은 그 해답이 효과가 있음을 확인하는 데 아주 오랜 시간이 걸렸습니다. – user1445967
답장을 보내 주셔서 다시 한번 감사드립니다. FileCopyDetails에서 문제를 해결하는 데 너무 오래 걸리면 죄송합니다. 아니면 빨리 확인할 수 있었을 것입니다. – user1445967
@ user1445967 걱정할 필요가 없습니다. 다행히 마쳤습니다. – Opal