![](/img/trans.png)
[英]With which maven dependencies can i create a standalone JMS client for Glassfish?
[英]Create a standalone groovy script with dependencies
我有一個依賴於 RestFB 的 Groovy 腳本:
<dependency>
<groupId>com.restfb</groupId>
<artifactId>restfb</artifactId>
<version>2.0.0</version>
<scope>runtime</scope>
</dependency>
我需要在另一台帶有groovy-shell 的機器上運行這個腳本。 當我現在這樣做時,我收到以下錯誤:
@ line 7, column 1.
import com.restfb.json.ParseException
^
1 error
我閱讀了構建 uber-jar 的方法,但從未找到一個很好的例子來展示如何做到這一點。 有關如何處理此解決方案的分步指南將非常有幫助。
我使用了@Grab
,起初在我的開發機器上運行良好。 當我切換到我的服務器時,會發生以下情況:
Caught: java.lang.NoClassDefFoundError: org/apache/ivy/core/report/ResolveReport
java.lang.NoClassDefFoundError: org/apache/ivy/core/report/ResolveReport
Caused by: java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport
我知道我至少需要這種常春藤依賴:
<dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<version>2.4.0</version>
</dependency>
但是我應該如何添加它以便腳本可以使用它?
如果在 Groovy 中編寫帶有依賴項的腳本,則不需要任何胖 jar。 Groovy 有一個稱為Grape的內置機制,它允許您將 maven 依賴項帶入您的腳本。 您所要做的就是在腳本的開頭使用@Grab('dependency_def')
注釋,就是這樣:
腳本.groovy
@Grab('com.restfb:restfb:2.0.0')
import com.restfb.json.ParseException
// do your stuff
現在你可以運行你的腳本:
groovy script.groovy
首次運行總是需要更多時間,因為 Grape 會解析和下載依賴項。 下一次運行的執行速度快了幾倍,因為已經下載了依賴項。
帶有@Grab
注釋的 Groovy 腳本也可以在 IDE 中輕松運行,例如 IntelliJ IDEA 有一個內置選項來抓取注釋並將它們添加到當前項目類路徑:將光標移動到@Grab
注釋,按Alt + Enter並選擇Grab the artifacts
選項。
參考: 使用 Grape 進行依賴管理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.