[英]Groovy: How does @Grab inclusion differ from classpath inclusion?
我對xpp3
有一個要求,我表示為:
// TestScript.groovy
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
import org.xmlpull.v1.XmlPullParserFactory;
println "Created: " + XmlPullParserFactory.newInstance()
運行$ groovy TestScript.groovy
失敗了
捕獲:org.xmlpull.v1.XmlPullParserException:由:org.xmlpull.v1.XmlPullParserException引起:
但是,如果我手動將Grape提取的.jar添加到我的Groovy類路徑中 :
$ groovy -cp ~/.groovy/grapes/xpp3/xpp3/jars/xpp3-1.1.3.4.O.jar \
TestScript.groovy
......然后一切正常。
Grab使用ivy從maven核心存儲庫中獲取指定的庫(以及所有依賴項)。 然后,它將這些下載的庫添加到運行當前腳本的加載器的類路徑中。
將jar添加到類路徑只是將指定的jar添加到系統類路徑中。
由於此示例中沒有依賴項,因此可能需要由系統類加載器加載庫。
要檢查這一點,請嘗試添加
@GrabConfig(systemClassLoader= true)
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
而不是你現在擁有的一條線
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.