2014-10-20 106 views
1

说我有两个Groovy的文件的文件夹:导入实用程序到Groovy脚本

Main.groovy 
Utils.groovy 

我在Utils.groovy文件中的一些方法,我想在Main.groovy使用,只要这样我就可以在以后重新使用它们其他Groovy脚本。所以,我在Main.groovy尝试这样做:

import Utils 

这似乎是工作在当前工作文件夹是一个在脚本所在。然而,这并没有工作,如果我cd -ed到其他地方,并显示错误消息:

unable to resolve class Utils 

任何方式对文件相对于脚本文件夹,而不是当前工作文件夹导入?我知道我可以提供-cp或者做其他事情,比如使用真正的构建工具,但想法是能够运行这些工具。

+0

你是如何运行'Main.groovy'? – 2014-10-20 20:24:03

+0

@tim_yates只是'常规Main.groovy'。 – 2014-10-20 20:42:25

+0

你可以用一个bash脚本运行它,为'-cp'设置正确的路径?这是Windows还是Linux? – 2014-10-20 20:44:52

回答

1

如果你有两个文件在同一个目录中,你不需要导入任何东西。看看这个例子。我在/tmp目录中创建了2个文件:Utils.groovy和Main.groovy。在Utils.groovy你可以找到:

class Utils { 
    def foo() { 
     return 2 
    } 
} 

在Main.groovy你可以找到:

Utils utils = new Utils() 
println utils.foo() 

所有我做的是:groovyc Main.groovy然后groovy Main。输出是:

[email protected] : /tmp 
[1] % groovy Main 
2 

然后从你目前在任何目录下运行,运行:

[email protected] : /usr 
[1] % groovy -cp /tmp /tmp/Main 
2 
+1

这是真的 - 没有想到这一点! +1提醒我。但正如我所说,cwd与脚本文件夹不同。对于你的例子,尝试做一个'cd/usr',然后'groovy/tmp/Main.groovy'。 – 2014-10-20 21:31:23

+0

@SzymonStepniak OP已经知道:*我知道我可以提供-cp或者做其他事情,比如使用真正的构建工具,但想法是能够运行这些。* – Opal 2014-10-21 05:15:56

+0

哦,错过了那个,thx。那么我没有看到任何问题。或者我想再次错过什么? :) – 2014-10-21 06:04:53