Как преобразовать скрипт 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/