Как преобразовать скрипт Picocli Groovy-Grape в собственное автономное приложение?

Я сделал свое первое отличное приложение CLI с picocli. Теперь я хочу, чтобы он был доступен для использования без какой-либо JVM, установленной на клиентском компьютере, возможно, с использованием GraalVM. Это для проекта с открытым исходным кодом: https://github.com/kchaitanya863/db2csv

3 ответа

Решение

Вам нужно будет:

  • статически скомпилировать ваш отличный скрипт
  • сделать args переменная доступна после статической компиляции с
final String[] args = getProperty("args") as String[]
  • указать файл конфигурации отражения для классов, динамически загружаемых / вызываемых с помощью отражения Groovy ( это может быть полезно)
  • укажите файл конфигурации отражения для классов, загруженных / вызванных с использованием отражения от picocli. picocli-codegen модуль обеспечивает picocli.codegen.aot.graalvm.ReflectionConfigGenerator инструмент для создания файла конфигурации.
  • Если в вашем скрипте есть @Grape зависимости, вам может потребоваться отключить менеджер зависимостей Grape с помощью -Dgroovy.grape.enabled=false и вместо этого вручную добавьте все зависимости в путь к классам

Предоставлено: большинство этих советов я получил из этой статьи Шимона Степняка.

Еще один простой способ - докернизировать ваш скрипт (читайте в этом блоге о том, как это сделать, 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

Если вы хотите использовать Graal с Groovy, ознакомьтесь с этой статьей: https://e.printstacktrace.blog/graalvm-and-groovy-how-to-start/

Другие вопросы по тегам