簡體   English   中英

在Groovy腳本中使用不在當前目錄中的類

[英]Using a class not in current directory in a Groovy script

MyClass.groovy有

def static a(){ ... }

MyScript.groovy使用MyClass像這樣:

x = MyClass.a()

如果MyClass.groovy與MyScript.groovy位於同一目錄中,則此方法很好。 如果我將MyClass.groovy放在〜/ .groovy / lib或CLASSPATH中的另一個目錄中,則它將不起作用。 如果MyClass.groovy不在當前目錄中,還有另一種方法可以告訴Groovy在哪里找到它嗎?

使用groovy的命令行時,我們將自動使用GroovyClassLoader ,它能夠即時編譯腳本。

如果您在類路徑文件夾中有MyClass.groovyMyScript.groovy ,但尚未編譯,則GroovyClassLoader將自動編譯它們。 由於當前目錄是類路徑的一部分,因此當您在當前目錄中同時擁有兩個文件時,它將起作用。

因此,只要兩個文件都包含在類路徑中,它就應該起作用。

關於./groovy/lib ,如果您在其中放置了帶有MyClass.classMyClass.groovy文件的.jar文件,則可以使其工作。 GROOVY_HOME/conf/groovy-starter.conf控制要加載的內容:

# load required librarieS
load !{groovy.home}/lib/*.jar

# load user specific libraries
load !{user.home}/.groovy/lib/*.jar

# tools.jar for ant tasks
load ${tools.jar}

因此,您可以編輯此配置以添加路徑,您可以在其中放置要自動加載的腳本。 例如,

# test
load !{user.home}/.groovy/myscripts/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM