2016-04-29 18 views
9

Tôi có một dự án gốc xây dựng WAR và hai dự án con xây dựng các JAR. Dự án gốc tham chiếu dự án con theo cách này:Gradle: tệp WAR được tạo ra có hai phiên bản JAR từ dự án con

apply plugin: 'war' 

jar.enabled = false 
war { 
    dependencies { 
     runtime project(':application1') 
     runtime project(':application2') 
    } 
} 

application2 phụ thuộc vào application1:

dependencies { 
    compile '...:application1:1.+' 
} 

Các tập tin WAR bao gồm hai phiên bản của application1.jar: một từ kho lưu trữ, một chỉ xây dựng.

EDIT: Application2 phải phụ thuộc vào application1 như một JAR vì đơn giản hóa việc gỡ lỗi trong Eclipse với Jetty được nhúng: Eclipse tự động thêm application1.jar vào classpath của cấu hình khởi chạy máy chủ Jetty.

+0

Tại sao application2 phụ thuộc vào application1 theo cách đó? Nó không nên. –

+0

Nên chỉ định phụ thuộc như thế nào? – isobretatel

+3

'dự án biên dịch (': application1')'. –

Trả lời

0

Bạn đã chỉ định phụ thuộc vào dự án application1 khác cho dự án gốc và cho application2.

Đối với application2, nó đã được thực hiện dưới dạng phụ thuộc vào thư viện trong một số kho lưu trữ, nhưng dự án gốc của bạn phụ thuộc vào nó như trên một tiểu dự án. Gradle không thể xác định, rằng một số thư viện trong repo là giống nhau, như tạo phẩm của tiểu dự án.

Nếu bạn không muốn nhận được 2 phiên bản của lib cùng, bạn phải làm cho nó phụ thuộc từ cùng một thư viện: hoặc như

compile '...:application1:1.+' 

hoặc như

runtime project(':application1') 

Dù sao, nó có vẻ là prefferable, để làm cho nó phụ thuộc vào cùng một tiểu dự án trong cả hai trường hợp, thay vì sau đó trên một số dự án và trên thư viện trong repo.

+0

Điều đó không giúp ích cho trường hợp sử dụng của tôi. Xem chỉnh sửa của tôi trong câu hỏi. – isobretatel

+0

@isobretatel thì cách duy nhất là khai báo một trong các phụ thuộc như được cung cấp, bạn đã thử nó chưa? – Stanislav

+0

>> khai báo một trong các phụ thuộc như được cung cấp << ​​- Làm thế nào? – isobretatel

Các vấn đề liên quan