Развертывание файлов Java - PullRequest
8 голосов
/ 18 июля 2010

Каковы лучшие практики (и инструменты включения) для развертывания автономных приложений Java вместе со всеми необходимыми jar-зависимостями, файлами конфигурации и сценариями запуска?

Существуют ли плагины Maven, которые облегчают публикацию бинарных выпусков, поэтомучто пользователям не нужно использовать maven, например?

Ответы [ 6 ]

6 голосов
/ 18 июля 2010

Существуют ли плагины Maven, облегчающие публикацию бинарных выпусков, чтобы пользователям не приходилось использовать, например, maven?

Используйте плагин Maven Assembly , чтобы создать бинарный дистрибутив в виде zip / tar.gz / tar.bz2 вашего проекта. Этот плагин очень гибкий - по цене некоторой сложности - и вы можете делать практически все, что захотите. Затем deploy (в смысле maven) произведенный артефакт, загрузите его куда-нибудь и т. Д.

3 голосов
/ 18 июля 2010

Что касается зависимости, я просто использую плагин для копирования зависимостей maven и копирую все зависимости в папку ./lib, а также предоставляю скрипт запуска, который использует подстановочный путь к классу (которыйто, как вы можете изменять свои зависимости столько раз, сколько хотите, и не нужно менять скрипт запуска).Что касается конфигурационных файлов, я помещаю их в папку ./config и снова включаю в путь к классу моего приложения в сценарии запуска (первый из них, по общему признанию, работает только для> Java 1.6).

Итак, в конце концов, почти все мои приложения имеют следующую структуру:

mystuff.jar launch.sh
./lib
./config

Тогда я просто соберу весь архив и передам его своим пользователям.Весь процесс, вероятно, легко автоматизировать с помощью maven, но я признаюсь, что я делаю это вручную: p

Если вы предпочитаете, и лицензии позволяют, вы также можете просто объединить все зависимости в один jar (с расширеннымзависимости внутри) с помощью сборочного плагина .Это делает банку громоздкой и дает пользователям обновленное приложение.труднее.Также у меня были проблемы с этим несколько раз из-за перезаписи файлов классов или чего-то такого, поэтому я лично придерживался папки ./lib.

1 голос
/ 11 сентября 2015

Вы можете использовать муравьиные или maven-скрипты Oracle:

http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm

Вышеприведенный код не только скомпилирует ваш код и создаст JAR-файлы, но также создаст двоичный исполняемый файл (файл Windows EXE или файл приложения Mac). Он также может создавать собственные установщики. Кроме того, он позволяет включать JVM в ваш дистрибутив, чтобы конечному пользователю не требовалось устанавливать Java.

1 голос
/ 20 июля 2010

Если ваша цель развертывания поддерживает RPM-файлы, я настоятельно рекомендую вам изучить rpm-maven-plugin .Это позволяет легко сопоставить артефакты вашего проекта, включая зависимости, с RPM-пакетом.

Я с большим успехом использую его для развертывания приложений среднего масштаба.

1 голос
/ 19 июля 2010

Есть launch4j, который, если вы можете заставить его работать, объединит приложение Java в исполняемый файл для вашей платформы.

0 голосов
/ 03 августа 2010

Взгляните на Appassembler Maven Plugin . Вы также можете объединить его с Assembly Maven Plugin .

Используйте плагин appassembler для генерации набора «программ», указав имена исполняемых файлов и основные классы. Вы также можете добавить его в начало и создать каталог etc, в который вы можете добавлять файлы конфигурации.

Если генерации каталога с помощью сценариев запуска и каталога бинарных файлов недостаточно, вы можете использовать плагин сборки, чтобы скопировать дополнительные файлы (скажем, файлы конфигурации) в соответствующий каталог и / или упаковать свое приложение в архив.

...