Groovy脚本可执行文件

Soi*_*oid 4 shell groovy

我想让我的groovy脚本可移植,我插入第一行:

#!/usr/bin/env groovy
Run Code Online (Sandbox Code Playgroud)

当我在其目录之外运行脚本时,问题就出现了,它无法找到库.我来自python世界,python中的所有导入都解析了相对脚本的路径.在groovy中,似乎我必须指定-classpath但是我不能在第一个#中做到这一点!线.

有什么建议如何解决?

Ove*_*ous 9

如果库存储在Maven存储库中,只要您想运行它就可以访问它,一种解决方案就是使用Grape来获取库.

这提供了几个好处:

  1. 您根本不必担心类路径
  2. 您不必分发库 - 只需确保客户端上的Groovy可用
  3. 库只下载一次,因此即使您升级应用程序,也只需重新分发该.groovy文件.

一个简单的例子:

#!/usr/bin/env groovy

@Grab(group='commons-io', module='commons-io', version='2.3')
import org.apache.commons.io.FileUtils

... use FileUtils like normal ...
Run Code Online (Sandbox Code Playgroud)

mvnrepository.com上已经有很多现有的库.

即使您拥有非公共库,将自己的库放入本地/私有存储库也相对容易.