2014-12-04 18 views
20

Tôi đang sử dụng Gradle và muốn xóa tất cả các tệp có phần mở rộng nhất định. Đó có phải là thứ mà Gradle có thể làm không?Gradle - Xóa các tệp có phần mở rộng nhất định

+1

Dần dần, bạn có thể làm bất cứ điều gì mà bạn có thể viết kịch bản. Vì vậy, câu hỏi thực sự là, "là có một nhiệm vụ ** gradle mà có thể xóa các tập tin với một phần mở rộng nhất định." Nếu nó không được viết như một nhiệm vụ thì bạn sẽ không nhận được lợi ích của đồ thị nhiệm vụ của gradle ('myBuild.dependsOn ('deleteFiles')') và/hoặc các bản xây dựng gia tăng. – kevinmm

Trả lời

34

Sử dụng Gradle Delete nhiệm vụ.

task deleteFiles(type: Delete) { 
    delete fileTree('dir/foo') { 
     include '**/*.ext' 
    } 
} 
+1

Đối với tôi điều này đã làm nó: 'xóa fileTree (dir: 'dir/foo', bao gồm: '**. Ext')' (Gradle 4.1, 2017) – lealceldeiro

+0

Làm thế nào tôi có thể khai báo một phương thức xóa kiểu bên ngoài? tức là ext.deleteFiles = {type: Xóa chuỗi ... tệpNames -> tệpNames.each {fileName -> xóa $ fileName } } –

2

Có một số cách để xóa các tập tin với chung extension.In nhất định, bạn phải chọn một số tập tin, sau đó lọc một số trong số họ và cuối cùng là xóa nhắc nhở file.For dụ thử điều này:

def tree = fileTree('${SOME_DIR}') 
tree.include '**/*.${SOME_EXT}' 
tree.each { it.delete() } 
+1

Hãy coi chừng rằng đây là mã cơ bản với mã Groovy sử dụng API Project.fileTree của gradle. Mã sẽ luôn luôn được thực thi trong giai đoạn cấu hình của một xây dựng gradle, trừ khi được đính kèm trong một khối nhiệm vụ tùy chỉnh. – kevinmm

2

Bạn có thể tùy chỉnh mặc định clean nhiệm vụ để bao gồm các thư mục khác và các tập tin để xóa như:

clean{ 
    delete 'buildDir', 'generated' 
} 

Nếu bạn muốn sử dụng glob, bạn có thể sử dụng fileTree ví dụ, hoặc bất kỳ phương pháp tiện lợi khác để liệt kê tệp:

clean{ 
    delete 'build', 'target', fileTree(dockerBuildDir) { include '**/*.rpm' } 
} 
Các vấn đề liên quan