我将groovy用作独立的脚本语言(而不是对其进行编译),并且在如何使用package
关键字构造多个文件而苦苦挣扎,但仍然能够import
在其他文件中使用它们。例如:
目录结构:
+-- Project
+-- Example.groovy
+-- ExampleTest.groovy
使用当前设置,没有任何package
关键字,我可以拥有以下内容:
// Example.groovy
class Example {
String message
def Example(input = "placeholder") {
this.message = input
}
}
//ExampleTest.groovy
import Example
class ExampleTest extends GroovyTestCase {
void testInitialiserWithoutArg() {
def object = new Example()
assertEquals(object.message, "placeholder")
}
void testInitialiserWithArg() {
def object = new Example("test")
assertEquals(object.message, "test")
}
}
这样,我可以在项目目录中添加脚本以使用示例类,或者使用groovy ExampleTest.groovy
(groovy bin位于PATH中)在命令行上运行测试。
然后,如何将Example
类放入包中,以便脚本可以导入示例类,并可以在命令行上运行单元测试?例如:
+-- Project
+-- some
| +-- random
| +-- main
| | +-- Example.groovy
| +-- test
| +-- ExampleTest.groovy
+-- UseExample.groovy
我加入package some.random
这两个Example.groovy
和ExampleTest.groovy
,但即使Example.groovy
与ExampleTest.groovy
刚刚在/Project/some/random
目录中,我似乎无法工作,如何import
将Example
课堂ExampleTest.groovy
从运行命令行或如何导入整个测试some.random
包像一个单独的脚本UseExample.groovy
。
这可能吗,或者我必须先编译该软件包才能使用它?
达格特(Daggett)的答案奏效,但要求将所有import
ed(并以groovy形式提供)的所有其他库添加到classpath
列表中。然后我发现groovy
可执行文件也有一个classpath
参数,因此以下是Daggett回答的简化版本,用于在不使用java
可执行文件运行常规脚本时:
groovy -classpath "./path/to/ExampleClass.groovy" ./scriptThatUsesExampleClass.groovy
我还注意到,类路径需要指向包的顶层目录,例如:
+-- Project
+-- main
| +-- my
| +-- example
| +-- ExampleClass.groovy
+-- test
| +-- my
| +-- example
| +-- TestExampleClass.groovy
+-- UseExampleClass.groovy
如果UseExampleClass.groovy
包含import my.example.ExampleClass
,则Java命令为:
path\to\Project:
> java -classpath %GROOVY_HOME%\lib\*;main groovy.ui.GroovyMain UseExampleClass.groovy
对于常规的二进制文件:
path\to\Project:
> groovy -classpath main UseExampleClass.groovy
使用-classpath main\my\example
导致unable to resolve class my.example...
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句