2012-03-16 4 views
6

Tôi muốn loại trừ thư mục trong Gradle .. Tôi đang sử dụng mã bên dưới .. Khi tôi thực hiện minus (tôi cũng đã thử exclude thư mục mà tôi đang cố gắng loại bỏ vẫn còn hiện diện trong srcDirs (khi tôi ra nó ở cuối)Loại trừ thư mục từ sourceSet không hoạt động ở Gradle

Gợi ý

apply plugin: 'java' 

sourceSets { 
    test { 
    java { 
     srcDirs 'src/test/unit/java' 
     minus 'src/test/java'    
    } 
    } 
} 

task outputDirs << { sourceSets.test.java.srcDirs.each{f -> println(f)}} 
+0

Bạn đang sử dụng phiên bản Gradle nào? –

Trả lời

8

thử loại này thay vì:.?

apply plugin: 'java' 

sourceSets { 
    test { 
     java { 
      srcDirs = ['src/test/unit/java'] 
     } 
    } 
} 

task outputDirs << { sourceSets.test.java.srcDirs.each{f -> println(f)}} 

rea này ssigns danh sách các thư mục nguồn (ở đây chỉ có một) đến thuộc tính srcDirs. sử dụng

srcDirs = 'src/test/unit/java' 

như trong mẫu của bạn, chỉ cần thêm một thư mục nguồn khác vào thư mục hiện có.

liên quan, René

+0

Cảm ơn, điều đó hoạt động .. câu hỏi thứ hai: tại sao không trừ hoặc loại trừ công việc? – vicsz

+0

Vâng, tôi cố gắng giải thích nó: tất cả các cuộc gọi trong phần đóng java –

+0

Vâng, một số ghi chú có thể làm rõ lý do tại đây: - srcDirs 'src/test/unit/java' trong dsl gradle có lập trình một cuộc gọi của SourceDirectorySet # srcDirs (Object ... srcPaths) - SourceDirectory thuộc loại FileCollection - Gọi trừ trên FileCollection không sửa đổi tập tin đã cho, nhưng thay vào đó tạo và trả về một FileCollection mới. Đó là lý do tại sao "trừ" không có hiệu lực ở đây. - Nói một cách đơn giản, không bao gồm công việc theo cách tương tự như cuộc gọi "trừ" ở đây. - Có một số todos trên giao diện SourceDirectorySet để làm sạch một số nội dung ở đây. Không chắc chắn nếu dọn dẹp này sẽ là một phần của 1.0 –