如何将picocli groovy-grape脚本转换为原生独立应用程序?

问题描述 投票:1回答:3

我用picocli创建了我的第一个groovy CLI应用程序。现在,我希望它可以在客户端计算机上没有安装任何JVM的情况下使用,也许可以使用GraalVM。这是一个开源项目:https://github.com/kchaitanya863/db2csv

groovy executable-jar graalvm picocli
3个回答
0
投票

你需要:

  • 静态编译你的groovy脚本
  • 静态编译后使args变量可用
final String[] args = getProperty("args") as String[]
  • 使用Groovy(this may be useful)的反射为动态加载/调用的类指定反射配置文件
  • 为picocli使用反射加载/调用的类指定反射配置文件。 picocli-codegen模块provides是一个用于生成配置文件的picocli.codegen.aot.graalvm.ReflectionConfigGenerator工具。
  • 如果您的脚本有任何@Grape依赖项,您可能需要使用-Dgroovy.grape.enabled=false关闭Grape依赖项管理器并手动将所有依赖项添加到类路径中

信用:我从Sazmon Stepniak获得了this article的大部分技巧


1
投票

另一个简单的选择是将脚本停靠(阅读此博客有关如何做到这一点https://groovy-lang.gitlab.io/101-scripts/docker/basico-en.html

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

  • 转换为gradle项目(maven也是一个选项,但gradle有很多插件)
  • 将您的脚本更改为具有典型main的类(并将其移动到标准目录src / main / groovy / mypackage)
  • 在build.gradle中添加一些类似于这些https://gitlab.com/snippets/1797638的任务

0
投票

如果你想将Graal与Groovy一起使用,请查看这篇文章:https://e.printstacktrace.blog/graalvm-and-groovy-how-to-start/

© www.soinside.com 2019 - 2024. All rights reserved.