Tôi có một ứng dụng Java kế thừa lớn với đầu cuối Grails và tôi đang làm việc thay thế kết thúc trước Grails bằng trong Play. Một số phụ thuộc của mô-đun (Maven) trong Java kế thừa mang lại những thứ có vấn đề/xung đột. Việc phân loại tất cả các phụ thuộc Java cũ không thực sự là một lựa chọn tại thời điểm này, vì vậy tôi muốn loại bỏ các phụ thuộc transitive mà tôi không thích.Chơi 2.0/SBT: Loại trừ một số phụ thuộc transitive nhất định từ một số/tất cả các mô-đun trong Build.scala
Trong Grails BuildConfig.groovy
, tôi có thể xác định một danh sách loại trừ:
def some_bad_things = [
[group: 'some-evil-group'],
[name: 'some-evil-module-from-another-group'],
[name: 'some-other-evil-module']
]
và sau đó sử dụng nó cho một khối toàn phụ thuộc trực tiếp:
dependencies {
compile (
[group: 'com.foo', name: 'foo-module1', version: '1.0'],
// ... 20 or 30 modules ...
[group: 'com.quux', name: 'quux-module42', version: '7.2'],
) {
excludes some_bad_things
}
}
Nó không rõ ràng những gì cú pháp Build.scala
là để làm điều tương tự. Dịch các phụ thuộc thực tế khá đơn giản ...
val appDependencies = Seq(
"com.foo" % "foo-module1" % "1.0" % "compile",
// ... 20 or 30 modules ...
"com.quux" % "quux-module42" % "7.2" % "compile"
)
... nhưng loại trừ thì không; có vẻ như tôi phải loại trừ mọi thứ riêng lẻ:
val appDependencies = Seq(
("com.foo" % "foo-module1" % "1.0" % "compile"),
.exclude("some-evil-group", "evil-module-1")
.exclude("some-evil-group", "evil-module-2")
.exclude("mostly-ok-group-1", "some-evil-module-from-another-group")
.exclude("mostly-ok-group-2", "some-other-evil-module"),
// ... 20 or 30 modules, each with four excludes ...
("com.quux" % "quux-module42" % "7.2" % "compile")
.exclude("some-evil-group", "evil-module-1")
.exclude("some-evil-group", "evil-module-2")
.exclude("mostly-ok-group-1", "some-evil-module-from-another-group")
.exclude("mostly-ok-group-2", "some-other-evil-module")
)
Tôi cho rằng không có nhiều khoa học tên lửa đang diễn ra ở đây và thậm chí nếu không có cách nào để loại trừ toàn cầu, nó không nên rất khó để viết một số chức năng trợ giúp, hoặc một cái gì đó, mà sẽ làm điều đó cho tôi. Nhưng tôi là một người mới chơi Scala và thậm chí không rõ ràng với tôi về những gì tôi đang xem hoặc tất cả những gì người điều hành làm, hoặc số tiền mà tôi thấy là Scala/SBT đơn giản và mức độ cụ thể của Play. Vì vậy, đề nghị chào đón?
đó là bởi đến nay các giải pháp thanh lịch nhất trong trường hợp tất cả các tiểu phụ thuộc là không bắt buộc. Ví dụ. nó đã giải quyết http: //x-stream.github.io/bao gồm cho tôi mà đấu tranh với lớp trùng lặp khác. –