2012-10-05 31 views
7

Tôi đang cố gắng xây dựng một tệp chiến dịch với Gradle, nhưng tôi đang gặp vấn đề không bao gồm một thư mục và bao gồm một thư mục khác có cùng tên, nhưng các thư mục mẹ khác nhau.Gradle: War Task có Xung đột Bao gồm/Loại trừ

Xin lưu ý trong ví dụ mã đầu tiên bên dưới mà không phải của css/ thư mục đang được bao gồm trong trận chung kết war tập tin - Tôi giả sử vì Gradle nghĩ rằng tôi muốn loại trừ bất kỳ thư mục tên css/ bất kể đường dẫn tuyệt đối của nó.

Về cơ bản tôi muốn loại trừ src/main/webapp/css và bao gồm build/tmp/css vì sau này chứa mã được rút gọn. Làm thế nào tôi có thể đạt được điều này? Tôi đã thử xác định một con đường tuyệt đối theo nhiều cách khác nhau nhưng chưa thành công.

war { 
    dependsOn minify 
    from('build/tmp/') { include ('css/') } 
    exclude('WEB-INF/classes/', 'css/') 
} 

Nếu tôi không loại trừ css/ như vậy:

war { 
    dependsOn minify 
    from('build/tmp/') { include ('css/') } 
    exclude('WEB-INF/classes/') 
} 

thì kết quả là cả hai mã minified và không được rút gọn được bao gồm.

Trả lời

5

Tôi không chắc chắn lý do tại sao bạn loại trừ WEB-INF/classes/css thay vì src/main/webapp/css trong build.gradle của bạn, nhưng sao chép các tập tin CSS minified thay vì những bản gốc được thực hiện bởi:

apply plugin: 'war' 

war { 
    // dependsOn 'minify' 

    from 'src/main/webapp' 
    exclude 'css' // or: "exclude 'WEB-INF/classes/css'" 

    from('build/tmp/css') { 
    include '**/*.css' 
    into 'css' // or: "into 'WEB-INF/classes/css'" 
    } 
} 
+0

Mục đích của 'loại trừ ('WEB -INF/classes/',' css/') 'là loại trừ cả hai thư mục đó. 'css /' không nằm trong 'lớp'. Khác hơn là 'vào 'css'' dường như làm các trick. – david