2012-12-17 28 views
15

choLàm thế nào để bạn loại trừ một sự phụ thuộc bắc cầu dự án trong gradle

dependencies { 
    compile project(':subproject') { 
     transitive = false 
    } 
} 

này không hoạt động đúng trong gradle 1.3. (nghĩa là tất cả các phụ thuộc được bao gồm trong tiểu dự án)

Đây có phải là lỗi hoặc có một cú pháp khác để loại trừ các phụ thuộc của dự án không?

+3

Tôi tìm thấy một Jira về vấn đề này chưa được giải quyết, nhưng có vẻ là một công việc xung quanh như sau: thêm dấu ngoặc thêm xung quanh dự án như sau compile (project (': subproject')) {transitive = false} - Tôi đang sử dụng nó và nó làm việc cho tôi - không trực quan nhưng hiệu quả –

+0

Nhận xét này nên được đánh dấu câu trả lời. Các khía cạnh không may của nó là một khi bạn loại trừ tất cả các dự án deps, nếu bạn xảy ra để bao gồm một trong những thiết lập (bởi vì bạn chỉ cần một tập hợp con của các lọ trong danh sách đó) gradle wont cho bạn. Vì vậy, cho các dự án điên có niềm vui không bao gồm dep bởi dep chỉ để làm một cái gì đó đơn giản. – Core

Trả lời

29

Cú pháp được hiển thị sẽ thêm thuộc tính mới (được gọi là động) transitive vào đối tượng Project, trừ khi được sử dụng ở nơi khác, sẽ không có tác dụng. Bạn sẽ nhận được một cảnh báo rằng các thuộc tính động đã bị phản đối, đó là dấu hiệu của một sai lầm tiềm ẩn trong kịch bản xây dựng và sẽ thất bại trong Gradle 2.0.

Cú pháp đúng là (như bạn đã nêu):

dependencies { 
    compile(project(':subproject')) { 
     transitive = false 
    } 
} 
+2

'Không có thuộc tính: transitive cho lớp: org.gradle.api.internal.project.DefaultProject_Decorated' – MariuszS

+0

cú pháp đã được sửa, nhưng sự phụ thuộc cũng chuyển đổi sang dự án mẹ. –

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