你如何得到正在运行的脚本在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脚本的位置。