[英]Include classes in a groovy script
如何在Groovy腳本中包含幾個類?
(此問題與REST無關,但我使用REST將問題放在正確的上下文中)
背景:我正在用Groovy開發CLI,以從我們正在運行的服務中獲取狀態信息。 狀態信息作為REST接口公開。
根據我在CLI上給出的參數,在REST接口上調用不同的路徑。 我還將實際的REST通信放入了類層次結構中,以便能夠重用代碼,這就是我遇到的問題。 如何以簡單的方式將類層次結構包含在groovy腳本中?
Groovy CLI腳本RestCli.groovy
import restcli.RestA
import restcli.RestB
if(args[0] == "A") {
new RestA().restCall()
}
else if(args[0] == "B") {
new RestB().restCall()
}
用於層級restcli/RestSuper.groovy
超類
package restcli
abstract class RestSuper {
protected def restCall(String path) {
println 'Calling: ' +path
}
abstract def restCall()
}
兩個類實現不同的調用。 restcli/RestA.groovy
package restcli
class RestA extends RestSuper {
def restCall() {
restCall("/rest/AA")
}
}
和restcli/RestB.groovy
package restcli
class RestB extends RestSuper {
def restCall() {
restCall("/rest/BB")
}
}
我想要得到的結果很簡單:
> groovy RestCli.groovy B
Calling: /rest/BB
有關如何執行此操作的任何想法?
我實際上想避免創建一個jar文件,然后使用-classpath
選項,因為我也使用@Grab
來獲取http-builder,如果我使用-classpath
那么我會遇到這樣的問題: java.lang.NoClassDefFoundError: groovyx.net.http.HTTPBuilder
您可以將多個類放在一個常規腳本中(不確定軟件包的工作方式/方式),也可以將軟件包結構作為目錄結構創建在與主腳本相同的文件夾中。
在您的示例中,可能看起來像這樣:
/
+ RestCli.groovy
+ restcli/
+--+ RestSuper.groovy
+--+ RestA.groovy
+--+ RestB.groovy
然后可以這樣調用腳本:
> groovy RestCli.groovy B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.