【问题标题】:How to convert picocli groovy-grape script to native standalone app?如何将 picocli groovy-grape 脚本转换为本机独立应用程序?
【发布时间】:2019-03-03 18:08:40
【问题描述】:

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

【问题讨论】:

  • 感谢您在项目中选择 picocli。提示:2.0.3 已经很老了,您可能需要升级到更高版本。此时的最新版本是 3.9.5。享受吧!

标签: groovy executable-jar graalvm picocli


【解决方案1】:

另一个简单的选择是将您的脚本 docker 化(阅读这篇关于如何操作的博客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

【讨论】:

    【解决方案2】:

    您需要:

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

    Credit:我从 Szymon Stepniak 的 this article 获得了大部分这些提示

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-17
        • 1970-01-01
        • 2015-12-29
        • 2019-07-11
        • 2013-09-03
        • 1970-01-01
        相关资源
        最近更新 更多