如何将picocli groovy葡萄脚本转换为本地独立应用程序



我有一个带有Picocli的Groovy Cli应用程序。现在,我希望可以在客户端计算机上安装任何JVM,也许可以使用GRAALVM使用。这是针对一个OpenSource项目:https://github.com/kchaitanya863/db2csv

另一个简单的选择是对您的脚本进行扩展(阅读此博客https://groovy-lang.gitlab.io/101-scripts/docker/docker/basico-en。html)

如果要构建Linux可执行文件,则需要更改项目:

  • 转换为Gradle项目(Maven也是一种选择,但Gradle有很多插件)

  • 将您的脚本更改为具有tipical main的类(并将其移至标准目录SRC/MAIN/GROOVY/MYPACKAGE)

  • 添加一些任务build.gradle类似于这些https://gitlab.com/snippets/1797638

您需要:

  • 静态编译您的Groovy脚本
  • 使args变量在
  • 的静态汇编后可用
final String[] args = getProperty("args") as String[]
  • 指定使用Groovy反射动态加载/调用类的反射配置文件(这可能很有用)
  • 为使用Picocli反射加载/调用的类指定反射配置文件。picocli-codegen模块提供了生成配置文件的picocli.codegen.aot.graalvm.ReflectionConfigGenerator工具。
  • 如果您的脚本具有任何@Grape依赖关系,则可能需要使用-Dgroovy.grape.enabled=false关闭葡萄依赖管理器,然后手动将所有依赖项添加到类Pather

信用:我从Szymon Stepniak

的本文中获得了大多数技巧

最新更新