Упаковка Java / Создание Jar-файла с общими технологиями - PullRequest
3 голосов
/ 24 марта 2011

Я просмотрел все распространенные посты на сайте, но мой вопрос немного отличается:

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

Например: у меня есть foo.java с основным и foo1.java, foo2.java, доступ к которому осуществляется из foo.java.И я использую log4j.jar, mysql.jar на моем пути сборки затмения.

Сейчас я использую муравей, который хорошо работает для его сборки.А я делаю простой сценарий .sh, который ссылается на всю информацию о classpath и log4j.Но это означает, что я должен дать им все эти банки, и они должны быть в правильном месте.Я хочу иметь возможность сказать «java -jar foo.jar» и запустить его на любой машине без необходимости переноса других файлов.

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

Кроме того, мне любопытно, что такое лучший метод,Вы обычно просто даете кому-то банку и даете им почтовый индекс всех банок зависимостей и говорите им поместить его в путь к классам?

Вы как-то делаете .rpm?

Я не знаком с MAVEN, но если это лучший способ, я сделаю учебное пособие.Прямо сейчас я использую муравья.

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

Вы можете объединить несколько jar-файлов в один jar-файл, используя такие инструменты, как

Затем вы можете запустить свое приложение, используя простой jar -jar yourApplication.jar.

С веб-страницы OneJar:

Что такое One-JAR?

One-JAR позволяет упаковать Java-приложение вместе с его JAR-файлами зависимостей в один исполняемый Jar-файлfile.

В JarJar и OneJar есть Ant-задачи для интеграции с Ant, включенные в их дистрибутивы.


Другой вариант - использовать WebStart.Таким образом, все зависимости загружаются автоматически, и развертывание новых версий очень просто.Требуется веб-доступ при первом запуске.

2 голосов
/ 24 марта 2011

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

Я предпочитаю создать каталог lib с моим jar и всеми его зависимостями.Укажите путь к классу с помощью Class-Path: в manifest.mf.Укажите основной класс с помощью Main-Class: в манифесте.Затем используйте java -jar my.jar для запуска приложения.Вам просто нужно упаковать свой класс и все его зависимости в zip или tar.

У Maven есть задача автоматизировать создание манифеста, а одна - автоматизировать создание архива.Но для простого проекта с одним артефактом и сторонними библиотеками, которые редко меняются, его легко создать с помощью скрипта ant.

0 голосов
/ 08 ноября 2017

Попробуйте Spring Boot .Он упакует все ваши JAR-файлы в единый полнофункциональный исполняемый JAR-файл, который можно просто выполнить с помощью java -jar myjar.jar. Кроме того, он предоставляет вам множество других интересных функций, поставляемых с Spring.Проверьте документы Spring: https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-first-application.html#getting-started-first-application-executable-jar

0 голосов
/ 24 марта 2011

Вы можете использовать такие инструменты, как JarJar , чтобы автоматически объединять все зависимости в один файл JAR, поэтому вашим пользователям нужен только один файл и он может выполнить java -jar foo.jar (или дважды щелкнуть по нему).

...