Как собрать 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
Вопросы все правильные и сформулированы даже неплохо.
Просто вбейте их в гугл — там все ответы будут (я проверил).

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

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

Орхан Гасанлы @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.
Если вы изменили значение
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.