Подтвердить что ты не робот

Каков наилучший способ упаковки приложения Java с большим количеством зависимостей?

Я пишу приложение java с использованием eclipse, которое ссылается на несколько внешних банок и требует, чтобы некоторые файлы конфигурации были доступны пользователю.

  • Каков наилучший способ его упаковки для развертывания?

  • Мое понимание заключается в том, что вы не можете помещать Jars в другой файл jar, это правильно?

  • Могу ли я сохранить файлы конфигурации из банки и все еще ссылаться на них в коде? Или путь к конфигурационному файлу должен быть аргументом командной строки?

  • Есть ли сторонние плагины для eclipse, чтобы облегчить это? Я использую файл сборки ant на данный момент, но я не уверен, что знаю, что я делаю.

  • Есть ли эквивалент проектов развертывания в Visual Studio, который будет определять все, что вам нужно, и просто делать установщик? Раньше я использовал install4j, и он был мощным, если не было рядом с автоматизированными проектами развертывания .NET.

Приветствия.

4b9b3361

Ответ 1

Нет никакого "лучшего способа". Это зависит от того, развертываете ли вы приложение swing, webstart, апплет, библиотеку или веб-приложение. Каждый из них отличается.

В пункте 2 вы правы. Файлы Jar не могут содержать другие файлы jar. (Ну, технически они могут, именно так, что внутренний файл jar не будет на вашем пути к классам, что фактически означает, что файлы jar не содержат файлов jar).

В пункте 3 вы, безусловно, можете ссылаться на файлы конфигурации вне файла jar. Обычно вы можете ссылаться на файл конфигурации как файл или ресурс. Если вы используете подход к ресурсам, он обычно исходит из пути classpath (может быть в банке). Если вы используете файл, вы указываете имя файла (не в банке).

В целом, большинство разработчиков Java будут использовать Apache Ant для достижения развертывания. Его хорошо документированы, поэтому взгляните.

Ответ 2

(1) Альтернативой ant, которую вы можете пожелать, является maven.

Краткое введение в maven можно найти здесь.

Для создания JAR maven имеет плагин jar, который может автоматизировать процесс обеспечения того, чтобы все зависимые баночки были указаны в вашем манифест манифеста.

Если вы используете eclipse, загрузите интеграцию maven.

(2) Другой альтернативой является использование OneJar (отказ от ответственности: не пробовал это сам).

Ответ 3

Ответы различаются в зависимости от того, что вы строите.

Если вы создаете библиотеку, лучше распределить свою работу как файл jar. Можно ссылаться на ваши зависимости jar с помощью атрибута Class-path в манифесте jar, хотя я обычно думаю, что это uncool. Этот атрибут был разработан для апплетов, и он использовался редко в библиотеках, которые, когда эта техника тянет материал в путь к классам (особенно обычный материал, который пользователь уже может использовать), вы можете получить неожиданные конфликты версий. И трудно отследить, почему вы их видите.

Публикация банки в Maven repo с информацией pom для отслеживания зависимостей - отличный выбор для библиотек. Если вы сделаете это, пожалуйста, опубликуйте свои координаты Maven в своих документах!

Если вы создаете приложение, два популярных варианта - распространять zip/tar/независимо от структуры развертывания или использовать программу установки. Если программа является серверно-иш-то-то-то, первая намного более распространена. Последнее чаще встречается у клиентов. Как правило, программа установки просто собирает структуру развертывания и, возможно, выполняет некоторые дополнительные задачи, такие как установка в определенных для ОС местах.

Чтобы создать структуру развертывания (aka "комплект" ), вы захотите создать повторяемый процесс в любой системе сборки, которую вы используете. Ant имеет множество примеров этого, и у Maven есть плагины сборки, которые могут помочь. Как правило, вы хотите включить банку своего кода, любые зависимости, сценарии для запуска программы, возможно, JRE и любые другие ресурсы, которые могут вам понадобиться.

Если вы хотите создать установщик, существует множество опций как бесплатных, так и коммерческих. Некоторые люди, которых я знаю, недавно получили хорошие впечатления от бесплатного IzPack, но проверьте свои варианты.

Ответ 4

Вам следует попробовать FatJar. Это плагин Eclipse, который с помощью простого щелчка в проекте может создать JAR файл со всем, что вам нужно для запуска приложения, включая необходимый JAR сторонней стороны.

Мы используем его каждый день, в сочетании с JSmooth для создания исполняемых файлов, развертывания наших пакетов программного обеспечения для наших клиентов и работы как прелесть.

Ответ 5

Хорошо, если вы говорите о развертывании автономного настольного приложения:

До того, как мы перешли на веб-начало, мы создали три архива развертывания: один для Windows, один для Mac и один для других платформ.

В окнах мы успешно использовали Nullsoft Scriptable Install System (известный тем, что использовали старые версии winamp) и ant task, хотя некоторые недостатки:

  • Используется только для окон AFAIR
  • Вам нужно выполнить какую-либо работу вручную, т.е. настроить созданный wizard script AFAIR

С другой стороны, он может создать установку Windows с помощью записей в меню "Пуск". Существует также плагин eclipse для интегрированного редактирования оболочки NSIS script.

В Mac OS X существует ant задача, чтобы создать файл .app из ваших java файлов, чтобы вы могли его запустить как собственное приложение os x. Но будьте осторожны, чтобы не писать какие-либо настройки в ваш домашний каталог и вместо этого использовать каталог приложения.

Для других вы должны ожидать, что они находятся в un * x env и разверните ваше приложение с помощью оболочки script, чтобы запустить приложение.

В любом случае вам может понадобиться развернуть свой файл файл политики, чтобы получить права доступа для вашего приложения.

Если вы хотите избавиться от всей упаковки и материалов, вам следует серьезно подумать об использовании веб-начала. Мы сэкономили много времени с момента перехода на него, т.е. Упростили процесс развертывания, позаботились о обновлениях и т.д.

Обновление 2014

Используйте плагин сборки maven, см. раздел "Создание исполняемого банку"

Ответ 6

Ant. Это не лучшая вещь в мире, но она стандартная, это апач, и она работает. Есть несколько хороших примеров в Интернете, как сделать простой build.xml для любого, и он получил некоторые функции, такие как задача "война", которая знает, как поместить все основные вещи (классы, web.xml и т.д.) В файл jar для тебя. Вы также можете сказать, что он забирает другие файлы конфигурации и банки, и он с радостью сделает это. Он также очень умный о том, что компилировать. Вы даете ему каталог, и он находит все java файлы и строит их только в том случае, если их классный файл устарел, поэтому вы получаете некоторые из традиционных функций для создания бесплатно без особых усилий.

Ответ 7

Вы можете посмотреть другие java-проекты (например, JMeter, SquirrelSQL, JEdit, Cernunnos и т.д.). Каждый пакет их приложений несколько отличается, поэтому рассмотрите свои цели, когда вы их просмотрите.