Mam dużą starszą aplikację Java z interfejsem Grails i pracuję nad zastąpieniem przedniego końca Grails nową wersją w grze. Niektóre zależności modułu (Maven) w starszej wersji języka Java powodują problemy/konflikty. Sortowanie wszystkich starszych zależności Java nie jest w tej chwili opcją, więc chciałbym po prostu wykluczyć przejściowe zależności, które mi się nie podobają.Play 2.0/SBT: wykluczenie pewnych przejściowych zależności z niektórych/wszystkich modułów w Build.scala
w Grails BuildConfig.groovy
mogę zdefiniować listę wykluczeń:
def some_bad_things = [
[group: 'some-evil-group'],
[name: 'some-evil-module-from-another-group'],
[name: 'some-other-evil-module']
]
a następnie użyć go do całego bloku bezpośrednich zależności:
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
}
}
to nie jest oczywiste, co składnia Build.scala
jest za zrobienie tego samego. Tłumaczenie rzeczywistych zależności jest dość proste ...
val appDependencies = Seq(
"com.foo" % "foo-module1" % "1.0" % "compile",
// ... 20 or 30 modules ...
"com.quux" % "quux-module42" % "7.2" % "compile"
)
... ale wyłączenia nie są; wygląda na to, muszę wykluczyć wszystko indywidualnie:
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")
)
Zakładam, że nie ma dużo nauki rakiet tu dzieje, a nawet jeśli nie ma na uboczu skrzynki wykluczyć globalnie, nie powinno ciężko napisać jakąś funkcję pomocniczą lub coś, co zrobiłoby to za mnie. Jestem początkującym programistą Scala i nie jest nawet dla mnie oczywiste, na jakie typy patrzę, ani co robią operatorzy, ani jak wiele z tego, co widzę, to zwykła Scala/SBT i ile zależy od Play. Czy sugestie są mile widziane?
to zdecydowanie najbardziej eleganckich rozwiązań w przypadkach, gdy wszystkie sub-Zależności są opcjonalne. Na przykład. rozwiązał http: //x-stream.gitub.io/włączenie dla mnie, które inaczej boryka się z duplikatami klasowymi. –