你如何得到正在运行的脚本在groovy的path?

我正在写一个groovy脚本,我想通过存储在同一个文件夹中的属性文件来控制。 不过,我希望能够从任何地方调用这个脚本。 当我运行脚本时,它总是根据运行的位置查找属性文件,而不是脚本的位置。

我如何从脚本中访问脚本文件的path?

你是正确的, new File(".").getCanonicalPath()不起作用。 这将返回工作目录

获取脚本目录

 scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent 

获取脚本文件path

 scriptFile = getClass().protectionDomain.codeSource.location.path 

如果您将Groovy代码作为脚本运行,这是有道理的,否则整个想法会变得混乱,IMO。 解决方法是这里: https : //issues.apache.org/jira/browse/GROOVY-1642

基本上这涉及到更改startGroovy.sh作为环境variables传递Groovy脚本的位置。