Как собрать java проект в jar
Перейти к содержимому

Как собрать java проект в jar

  • автор:

Как собрать jar

Написал небольшую програму для десктопа на TornadoFX . Не могу понять как сгенерить jar в IntellJ Idea . Пробовал стандартный способ с генерацией обычного jar -артифакта но они не запускаються( linux говорит что нет манифеста, хотя он был). Опыта с JavaFX и TornadoFX не имел ранее, поэтому прошу любой помощи.

Отслеживать
задан 8 фев 2019 в 12:01
1,360 1 1 золотой знак 9 9 серебряных знаков 21 21 бронзовый знак

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В IntelIJ с помощью комбинации клавиш CTRL+ALT+SHIFT+S попадаем в структуру проекта. Заходим в пункт Artifacts Нажимаем на Add (зеленый плюс), выбираем JAR и пункт from modules with dependencies. В выплывающем окне выбираем главный класс. Жмем ОК, закрываем окно. Выскочит еще одно окно, в котором нажимаем Apply, закрываем это окно. Настройка закончена. Идем в пункт Build Выбираем Build Artifact, затем Build.

Исполняемый файл будет сгенерирован в директории out / Artifacts. Могут возникнуть проблемы если в проекте есть import какого-либо пакета. но этого импорта нет в classpath Если JAR не запускается, войдите в структуру проекта, пункт Modules -> Dependencies -> Add -> Project Libruary -> Attach JAR

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

java -jar filename.jar И запускать уже файл.bat.

Сборка JAR-файлов в IntelliJ IDEA

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

Допустим, есть проект, состоящий из одного модуля и нескольких зависимостей. Предположим, что требуется создать JAR-файл, который будет содержать скомпилированный модуль, а также все зависимости. Однако при попытке собрать JAR-файл в IntelliJ IDEA, выходит так, что модуль оказывается пустым, кроме файла META-INF .

Сборка JAR в IntelliJ IDEA

Вот пошаговый процесс, описывающий, как можно правильно создать JAR-файл в IntelliJ IDEA:

Шаг 1: Создание артефакта

Для начала необходимо создать артефакт JAR в IntelliJ IDEA. Это можно сделать, перейдя в меню File > Project Structure > Artifacts . Затем следует нажать на плюс и выбрать «JAR» из выпадающего списка. Далее следует выбрать «From modules with dependencies».

Шаг 2: Указание модуля и пути к главному классу

После этого IntelliJ IDEA запросит модуль и путь к главному классу для вашего JAR-файла. Здесь следует выбрать модуль и указать путь к главному классу, который будет запущен при выполнении JAR-файла.

Шаг 3: Добавление зависимостей

Затем IntelliJ IDEA автоматически добавит все файлы и библиотеки, необходимые для работы вашего приложения, в JAR-файл. Если требуется добавить дополнительные библиотеки или файлы, их можно добавить вручную, перетащив в область артефакта.

Шаг 4: Сборка артефакта

После того, как все настроено, можно собрать артефакт, выбрав Build > Build Artifacts и выбрав ваш артефакт для сборки.

После выполнения этих шагов в указанном каталоге должен появиться JAR-файл, содержащий все необходимые для работы приложения файлы. Если при запуске полученного JAR-файла возникают проблемы, возможно, требуется проверить пути к библиотекам и классам в настройках артефакта.

Как собрать java проект на maven в jar файл и поставить на ubuntu server 18.04?

Меня интересует ряд вопросов:
1) Как правильно собрать java на maven с учетом всех нюансов?
2) Как перенести jar файл на сервер ubuntu 18.04?
3) Как запустить jar файл на сервере?
Спасибо всем за ответы!

  • Вопрос задан более года назад
  • 319 просмотров

4 комментария

Простой 4 комментария

Dmitry Roo @xez Куратор тега Java

Вопросы все правильные и сформулированы даже неплохо.
Просто вбейте их в гугл — там все ответы будут (я проверил).

hottabxp

Вопросы все правильные и сформулированы даже неплохо.

Ну вот одно не совсем понятно, при чем здесь тег «Боты»?
Dmitry Roo @xez Куратор тега Java
Сергей Карбивничий, Ilya5527 бота, видимо, деплоить хочет.
Ilya5527 @Ilya5527 Автор вопроса
Dmitry Roo, ДА, я хочу задеплоить бота на ubuntu server
Решения вопроса 0
Ответы на вопрос 2

ky0

Миллиардер, филантроп, патологический лгун

1. В репозитории обычно есть все нужные конфиги и обвязка
2. Так же, как любой другой файл
3. java -jar /path/to/your-file.jar

Ответ написан более года назад
Комментировать
Нравится 1 Комментировать

azerphoenix

Орхан Гасанлы @azerphoenix Куратор тега Java
Java Software Engineer

Добрый день.
Можно по-разному задеплоить приложение.
Один из возможных способов это docker или docker-compose.
Шаги:
1 — создать Dockerfile, указать как проект должен быть собран, что нужно установить и т.д.
Например,

FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine as build COPY . /srv RUN cd /srv && chmod +x mvnw && ./mvnw clean package FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine WORKDIR /srv COPY --from=build /srv/target/.jar /srv/.jar ENTRYPOINT exec java -jar /srv/.jar

2 — залить проект на гит
3 — сделать git clone этого проекта на удаленный сервер.
4 — запустить docker или docker-compose

Другое более простое решение:
1 — собрать архив при помощи maven
mvn clean package
2 — Полученный архив из директории target/(JAR_NAME).jar закинуть по scp на сервер.
3 — Установить jre соответствующей версии и запустить проект.
java -jar /srv/.jar

Сборка Java-проекта с использованием Maven

Этот урок освещает создание вами простого Java-приложения с использованием Maven.

Что вы создадите

Вы создадите простое приложение и соберете его с помощью Maven.

Что вам потребуется

  • Примерно 15 минут свободного времени
  • Любимый текстовый редактор или IDE
  • JDK 6 и выше

Как проходить этот урок

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

Чтобы начать с нуля, перейдите в Настройка проекта.

  • Загрузите и распакуйте архив с кодом этого урока, либо кнонируйте из репозитория с помощью Git: git clone https://github.com/spring-guides/gs-maven.git
  • Перейдите в каталог gs-maven/initial
  • Забегая вперед, установите Maven

Когда вы закончите, можете сравнить получившийся результат с образцом в gs-maven/complete .

Настройка проекта

Для начала вам необходимо настроить Java-проект перед тем, как собрать его Maven’ом. Т.к. урок посвящен Maven, сделаем проект максимально простым, насколько это возможно.

Создание структуры каталогов

В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/hello для *nix систем:

+-- src +-- main +-- java +-- hello

Внутри src/main/java/hello директории вы можете создать любые Java-классы, какие вы хотите. Для простоты и согласованности с остальной частью урока, Spring рекомендует вам создать два класса: HelloWorld.java и Greeter.java .

package hello; public class HelloWorld < public static void main(String[] args) < Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); >>
package hello; public class Greeter < public String sayHello() < return "Hello world!"; >>

Теперь, когда у вас есть проект, который вы можете собрать с Maven, вам нужно установит сам Maven.

Maven можно получить, скачав zip-файл с maven.apache.org/download.cgi. Необходимы только бинарные файлы, так что ищите ссылку на архив с именем apache-maven-version-bin.zip или apache-maven-version-bin.tar.gz.

Распакуйте архив и добавьте путь к каталогу bin в переменную окружения path.

Чтобы протестировать правильность установки Maven, запустите в командной строке:

mvn -v

Если всё было сделано правильно, то вы увидите сообщение примерно такого содержания:

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 07:51:28-0600) Maven home: /usr/share/maven Java version: 1.7.0_09, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"

Теперь у вас есть установленный Maven.

Создание простой сборки Maven

Теперь, когда Maven установлен, вам необходимо создать определение Maven-проекта. Maven-проекты определяются как XML-файлы с названием pom.xml. Помимо всего прочего, этот файл определяет имя проекта, версию, а также зависимости от сторонних библиотек.

Создайте файл с названием pom.xml в корневом каталоге проекта и наполните его следующим содержанием:


xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
org.springframework
gs-maven
jar
0.1.0




org.apache.maven.plugins
maven-shade-plugin
2.1


package

shade



implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
hello.HelloWorld








За исключением дополнительного элемента , это простейший из pom.xml файлов, необходимый для сборки Java проекта. Он включает следующие детали конфигурации проекта:

  • — версия POM-модели (всегда 4.0.0)
  • — группа или организация, к которой принадлежит проект. Чаще всего выражается в виде перевернутого наоборот доменного имени
  • — имя, которое будет передано библиотеке экземпляра(artifact) проекта (к примеру, имя его JAR или WAR файла)
  • — версия, с которой будет собран проект
  • — как проект должен быть упакован. По умолчанию, с «jar» упаковывается в JAR-файл, «war» — WAR-файл

Когда речь заходит о выборе схемы управления версиями, Spring рекомендует [семантическое управление версиями] semver.org подход.

На данном этапе мы имеем минимальное, но уже рабочее определение Maven-проекта.

Сборка Java кода

Теперь все готово для сборки проекта Maven’ом. Вы можете выполнить несколько этапов жизненного цикла сборки, включая компиляцию кода, создание библиотеки пакета(такого, как JAR-файл) и установку библиотеки в локальный репозиторий Maven зависимостей.

Попробуйте собрать, выполнив команду, приведенную ниже:

mvn compile

Этим вы запустите Maven, передав ему указание на выполнение задачи compile. Когда он закончит, вы должны найни скомпилированные .class файлы в target/classes директории.

Вряд ли вы захотите распостранять или работать напрямую с .class файлами, поэтому вам полее подойдет выполнение задачи package:

mvn package

Задача package включает компиляцию вашего Java кода, запуск тестов, а в конце упаковывает в JAR-файл в target директории. Название JAR-файла будет основано на и . К примеру, с минимальным pom.xml(см. выше), JAR-файл будет иметь название gs-maven-initial-0.1.0.jar.

Если вы изменили значение с «jar» на «war», то результатом будет WAR-файл в target директории вместо JAR-файла.

Maven также хранит репозиторий зависимостей на вашей локальной машине(обычно в .m2/repository директории в вашей домашней папке) для быстрого доступа к зависимостям проекта. Если вы хотите добавить JAR-файл вашего проекта в локальный репозиторий, тогда вам необходимо выполнить задачу install :

mvn install

Задача install включает компиляцию, тестирование, упаковку кода проекта, а затем копирование в локальный репозиторий, тем самым другие проекты смогут ссылаться на него как на зависимость.

Говоря о зависимостях, пришло время объявлять зависимости в Maven сборке.

Объявление зависимостей

Простой «Hello World» пример полностью автономный и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений зависит от внешних библиотек, с реализацией распостраненного и/или сложного функционала.

К примеру, предположим, что в дополнение к «Hello World!» вы хотите, чтобы приложение печатало текущую дату и время. Вы могли бы использовать функциональность из стандартных(native) Java библиотек, но мы можем сделать это и другими интересными способами, например с помощью Joda Time библиотеки.

Для начала, изменим HelloWorld.java , как показано ниже:

package hello; import org.joda.time.LocalTime; public class HelloWorld < public static void main(String[] args) < LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); >>

Здесь HelloWorld использует Joda Time LocalTime класс для получения и печати текущего времени.

Если бы вы запустили mvn compile для сборки проекта сейчас, то получили бы ошибку сборки, потому что вы не объявили Joda Time компилируемую зависимость в сборке. Вы можете это исправить, добавив следующие строки в pom.xml(в пределах элемента):

 

joda-time
joda-time
2.2

Этот блок XML объявляет список зависимостей проекта. В частности, он объявляет единственную зависимость от Joda Time библиотеки. В элементе, зависимость определяется через описание трех вложенных элементов:

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

По умолчанию, все зависимости определены как зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить элемент, с одним из значений:

  • provided — зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
  • test — зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта

Сейчас, если вы выполните mvn compile или mvn package , Maven должен будет разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.

Здесь полная версия pom.xml :


xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
org.springframework
gs-maven
jar
0.1.0




joda-time
joda-time
2.2







org.apache.maven.plugins
maven-shade-plugin
2.1


package

shade



implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
hello.HelloWorld








Полная версия pom.xml использует Maven Shade Plugin как удобный инструмент для создание выполняемого JAR-файла. Целью данного урока является показать, как начать работать с Maven, не используя, в частности, этот плагин.

Итог

Поздравляем! Вы создали простой, но эффективный файл сборки Maven для сборки Java проектов.

С оригинальным текстом урока вы можете ознакомиться на spring.io.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *