2011-09-27 25 views
5

Tôi đang cố gắng loại trừ một phụ thuộc, chủ yếu là "slf4j-simple" từ bản dựng của tôi. Nó hoạt động tốt, nhưng không được phản ánh khi tôi chạy "gradle gradl".Cần loại trừ sự phụ thuộc từ nhật thực bằng cách sử dụng tệp xây dựng gradle

Tôi có đoạn code sau trong gradle xây dựng tập tin của tôi:

apply plugin:'war' 
apply plugin:'eclipse' 
apply plugin:'jetty' 
... 
dependencies { 
    compile 'mysql:mysql-connector-java:5.1.16' 
    compile 'net.sourceforge.stripes:stripes:1.5' 
    compile 'javax.servlet:jstl:1.2' 
    ... (Rest of the dependencies) 
} 
configurations { 
     all*.exclude group:'org.slf4j',module:'slf4j-simple' 
} 

Bây giờ, khi tôi chạy 'build gradle', các slf4j-đơn giản được loại trừ khỏi các tập tin chiến tranh tạo ra mà là tốt.

Khi tôi chạy 'nhật thực gradle', slf4j-simple không bị loại trừ khỏi đường dẫn lớp eclipse.

Một giải pháp cho vấn đề được đề cập trong sách dạy nấu ăn gradle nhưng tôi không hiểu làm thế nào để áp dụng nó:

http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-ExcludingdependenciesfromEclipseProjects

Trả lời

4

Hãy thử thêm này để build.gradle của bạn:

eclipseClasspath{ 
    plusConfigurations.each{ 
    it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' } 
    } 
} 
+0

Tôi có một câu hỏi quan trọng hơn. Làm thế nào tôi có thể học gradle và hiểu làm thế nào để thao tác các cấu hình nâng cao như vậy? Tôi thực sự không thể giữ được nó, mỗi khi tôi cần một cái gì đó tôi cần phải gửi một câu hỏi. –

+1

Gradle có tài liệu khá tốt trên trang web chính thức của họ. Tôi đã học được mọi thứ tôi cần biết từ đó (và cũng thỉnh thoảng nhìn vào mã nguồn Gradle). Đối với bất cứ điều gì khác, hãy yêu cầu ở đây hoặc google)) – rodion

+1

Sử dụng plugin IDE Gradle trong Eclipse Kepler tính năng này không hoạt động. Tôi có một phụ thuộc thời gian chạy mà tôi đang cố gắng loại trừ bằng cách sử dụng phương pháp trên; Eclipse Gradle chạy build.gradle mà không có khiếu nại, nhưng đường dẫn xây dựng dự án vẫn chứa các tạo phẩm bị loại trừ. –

2

Với gradle 1.0-milestone-3 Tôi đã phải sửa đổi từ câu trả lời của rodion để làm cho nó hoạt động:

eclipseClasspath{ 
doFirst{ 
    plusConfigurations.each{ 
     it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' } 
    } 
    } 
} 
1

Sử dụng eclipseClasspath không làm việc cho tôi, nhưng điều này làm các trick:

configurations { 
    compile { 
     exclude group: 'commons-logging' 
     exclude module: 'jcl-over-slf4j' 
    } 
} 

Đó không bao gồm commons-logging khỏi bị bao gồm transitively (từ sự phụ thuộc của dự án trên Spring) và cũng jcl-over-slf4j từ được đưa vào xây dựng các dự án của Eclipse đường dẫn (Tôi có một sự phụ thuộc Gradle runtime trên jcl-over-slf4j nhưng không muốn nó được đưa vào đường dẫn xây dựng (biên dịch).

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