Tôi có một tiểu dự án với một spec chiến tranh trông như thế này:Gradle -> Làm thế nào để bỏ qua một số lọ từ WEB-INF/lib
war {
from('resources') {
include '*.properties'
into 'WEB-INF/classes/'
}
webXml = file('src/main/webapp/WEB-INF/web.xml')
}
Các công trình lớn. Tạo ra một tập tin chiến tranh chất béo duy nhất có thể triển khai với Tomcat. Vấn đề là, khi triển khai với TomEE và JBoss, tôi gặp phải xung đột (ví dụ với Javax Servlet, Jersey, v.v.). Vì vậy, tôi muốn loại trừ một bộ lọ không bị war'd. Tôi nhìn vào tài liệu chiến tranh Gradle, và có vẻ như tôi cần phải sử dụng loại trừ cho việc này. Tôi đã thử nó hai cách khác nhau, và các lọ không bị loại trừ từ chiến tranh:
war {
// copy properties file in classes so that
// they may be loaded from classpath
from('resources') {
include '*.properties'
into 'WEB-INF/classes/'
}
// specify web xml
webXml = file('src/main/webapp/WEB-INF/web.xml')
// remove jars that conflict with TomEE
exclude '**/javax.inject-1.jar'
exclude '**/javax.servlet-2.5.0.v201103041518.jar'
exclude '**/servlet-api-2.5.jar'
exclude '**/validation-api-1.0.0.GA.jar'
}
Đây là một tiểu dự án (Karyon-ví dụ) trong dự án NetFlix/Karyon lưu trữ trên github. Sự phụ thuộc vào các tiểu dự án giống như thế này:
dependencies {
compile 'org.slf4j:slf4j-api:1.7.0'
runtime 'org.slf4j:slf4j-simple:1.7.0'
compile project(':karyon-extensions')
compile project(':karyon-admin-web')
}
Và tôi muốn tránh chỉnh sửa những thứ như biên dịch so với phụ thuộc thời gian chạy, đặc biệt là trong các tập tin và các tiểu dự án khác. Trong thực tế các lọ tôi đang cố gắng để loại trừ ở trên là lành tính khi chạy với cầu cảng và tomcat thường xuyên.
Tôi chỉ muốn loại trừ các lọ này mà không làm phức tạp các tập lệnh xây dựng. Tôi đang thiếu gì?
Cảm ơn
@ Rob - 'providedRuntime' có lẽ là con đường để đi. Nó chỉ có nghĩa là thư viện sẽ không được thêm vào tập tin chiến tranh. Bạn có thể sử dụng 'exclude' nhưng tiếc là nó không có giấy tờ và rất khó hiểu về cách thực hiện nó. – david