2013-04-23 2 views
3

Я хочу распространять пакет Java, который я написал под какой-либо разрешительной лицензией.Как распространять банку с открытым исходным кодом с зависимостями?

В результате speedytools-0.1.jar имеет некоторые общие зависимости Java, такие как Apache Commons и Guava.

Что является самым распространенным способом Java-esque для распространения этой банки? Должен ли я включать зависимости в мой распределенный zip-файл?

+1

Вы упаковываете свою банку с maven? – Magnilex

ответ

6

Вы не должны включать зависимости в свою банку. Просто объявите их как зависимости maven.

Это даст ряд преимуществ:

  • Пользователи могут использовать библиотеку в сочетания с автономной гуавой любой обратной совместимой версии.

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

2

jarjar: «Встраивание java-библиотек с 2004 года».

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

  • Вы можете свободно изменять свои библиотеки, если вы добавите зависимость в будущую версию - пользователям не придется перенастраивать свои скрипты сборки.

  • Вы можете исправить библиотеки в соответствии с вашими потребностями: если вы хотите создать специальную сборку из одной из этих общих зависимостей Java, а затем взломать - ваша сборка даже не должна быть совместима с общедоступной версией.

  • Он делает весь процесс загрузки и реализации вашего пакета чрезвычайно простым. Степень, в которой это выгодно (или даже желательно), зависит, очевидно, от того, что ваш пакет, что он делает и для кого вы хотите, чтобы он это сделал. По общему признанию, я бы одобрил решение maven в большинстве случаев прецедентов, которые я могу себе представить, но нотештян, я думаю, что jarjar определенно имеет место в вопросе, как открытый, как этот, поскольку, безусловно, все еще используются случаи, для которых он идеален.

ps большой вопрос, с нетерпением ждем других ответов.

+0

jarjar хорош, но на самом деле он не отвечает на вопрос, должны ли быть включены внешние зависимости. – Magnilex

+0

@MagnusTengdahl: Ты меня слышишь? :) – drewmoore

+0

Да, сэр! :) Хотя я по-прежнему предпочитаю путь maven в другом ответе (в зависимости от цели фляги). – Magnilex

Смежные вопросы