Поставить внешнюю библиотеку в JAR?

Я добавил несколько внешних библиотек в свой проект Java (в NetBeans).
Можно ли поместить внешнюю библиотеку jar в архив java (и не помещать их в отдельный (например) каталог "lib")?

6 ответов

Решение

Конечно вы можете. Есть несколько проектов с открытым исходным кодом, которые можно загрузить с помощью "комплекта jar", который содержит все зависимости.
Вам нужно извлечь все банки, а затем снова собрать их в один файл.
Пример того, как сделать это с помощью Ant, можно увидеть здесь.

Проект JarJar позволяет вам упаковать зависимые jar-файлы в один jar-файл для распространения.

В проекте предусмотрена задача ant для упаковки, и, поскольку проекты netbeans используют Ant для процесса сборки, вы сможете легко интегрировать его в свою сборку.

Да, это возможно, и получившаяся банка на самом деле называется "uberjar" или "мегаджар". По сути, чтобы создать "uberjar", вам нужно извлечь содержимое внешней библиотеки (используя jar -x) и упаковать его в свою банку (с jar -c). Это может быть достигнуто вручную или с помощью инструмента сборки, такого как Ant (и дополнительная поддержка проекта, такого как One-JAR) или Maven, который имеет встроенную поддержку для этого через плагин maven-assembly-(или maven-shade). -plugin)

Если вы используете Maven, вы можете рассмотреть плагин Maven Shade или плагин сборки.

Есть простой способ сделать это с помощью встроенных скриптов.

Был еще один вопрос, связанный с этой статьей: http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/

Я добавил это, но был такой нуб, я не знал, как его использовать. У этой статьи был отличный визуальный учебник. По сути, после изменения вашего ant-скрипта, перейдите на вкладку files (в проводнике слева) => щелкните правой кнопкой мыши на xml => run tasks => other tasks => пакет для хранилища (или как вы его назвали)

Если речь идет об упаковке банок в банки, это всегда делается для веб-приложений в файлах war или ear. Если ваше приложение является автономным, вы можете разархивировать файлы и упаковать их в один полученный файл, используя задачи Ant jar и unjar: http://ant.apache.org/manual/Tasks/unzip.html Но я бы не рекомендовал делать это. этот.

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