में कुछ/सभी मॉड्यूल से कुछ ट्रांजिटिव निर्भरताओं को बहिष्कृत करें मेरे पास एक ग्रेलेस फ्रंट एंड के साथ एक बड़ी विरासत जावा एप्लिकेशन है, और मैं Grails front end को एक नए लिखित के साथ बदलने पर काम कर रहा हूं खेल में। विरासत जावा में कुछ (मेवेन) मॉड्यूल निर्भरता समस्याग्रस्त/विरोधाभासी चीजें लाती हैं। सभी विरासत जावा निर्भरताओं को सॉर्ट करना वास्तव में इस बिंदु पर एक विकल्प नहीं है, इसलिए मैं केवल उन ट्रांज़िटिव निर्भरताओं को बाहर करना चाहता हूं जिन्हें मैं पसंद नहीं करता हूं।प्ले 2.0/एसबीटी: Build.scala
में Grails BuildConfig.groovy
, मैं बहिष्करण सूची परिभाषित कर सकते हैं:
def some_bad_things = [
[group: 'some-evil-group'],
[name: 'some-evil-module-from-another-group'],
[name: 'some-other-evil-module']
]
और फिर सीधे निर्भरता की एक पूरी ब्लॉक के लिए इसका इस्तेमाल करते हैं:
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
}
}
यह स्पष्ट नहीं क्या Build.scala
वाक्य रचना है एक ही काम करने के लिए। वास्तविक निर्भरताओं का अनुवाद करना बहुत सरल है ...
val appDependencies = Seq(
"com.foo" % "foo-module1" % "1.0" % "compile",
// ... 20 or 30 modules ...
"com.quux" % "quux-module42" % "7.2" % "compile"
)
... लेकिन बहिष्करण नहीं हैं; जैसे मैं व्यक्तिगत रूप से सब कुछ निकालने की ज़रूरत यह लग रहा है:
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")
)
मुझे लगता है वहाँ रॉकेट विज्ञान का एक बहुत यहाँ चल रहा नहीं है, और यहां तक कि अगर वहाँ बॉक्स रास्ते से कोई बाहर है विश्व स्तर पर बाहर करते हैं, ऐसा नहीं होना चाहिए कुछ सहायक समारोह, या कुछ लिखना मुश्किल हो, जो मेरे लिए यह करेगा। लेकिन मैं एक स्कैला नौसिखिया हूं और यह मेरे लिए भी स्पष्ट नहीं है कि मैं किस प्रकार देख रहा हूं या सभी ऑपरेटर क्या करते हैं, या मैं जो देख रहा हूं वह सादा स्कैला/एसबीटी है और प्ले-विशिष्ट कितना है। तो, सुझावों का स्वागत है?
मामलों में जहां सभी उप-निर्भरता वैकल्पिक हैं में अब तक का सबसे सुरुचिपूर्ण समाधान द्वारा होती है। जैसे यह http: //x-stream.github हल किया गया।मेरे लिए io/समावेशन जो क्लास-डुप्लिकेट के साथ अन्यथा संघर्ष करता है। –