我正在编写一个groovy脚本,我希望通过存储在同一文件夹中的属性文件来控制它.但是,我希望能够从任何地方调用此脚本.当我运行脚本时,它总是根据运行的位置查找属性文件,而不是脚本所在的位置.
如何从脚本中访问脚本文件的路径?
sea*_*and 76
你是对的new File(".").getCanonicalPath(),不行.返回工作目录.
获取脚本目录
scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
Run Code Online (Sandbox Code Playgroud)
获取脚本文件路径
scriptFile = getClass().protectionDomain.codeSource.location.path
Run Code Online (Sandbox Code Playgroud)
Jos*_*vis 11
如果您将Groovy代码作为脚本运行,这是有道理的,否则整个想法会有点混乱,IMO.解决方法如下:https://issues.apache.org/jira/browse/GROOVY-1642
基本上这涉及更改startGroovy.sh以将Groovy脚本的位置作为环境变量传递.
M. *_*tin 11
从Groovy 2.3.0开始,@groovy.transform.SourceURI注释可用于使用脚本位置的URI填充变量.然后可以使用此URI获取脚本的路径:
import groovy.transform.SourceURI
import java.nio.file.Path
import java.nio.file.Paths
@SourceURI
URI sourceUri
Path scriptLocation = Paths.get(sourceUri)
Run Code Online (Sandbox Code Playgroud)