Из Java FX в Maven

136
11 июля 2018, 18:00

Требуется собрать приложение.
При создании проекта выбирал java fx.
Как преобразовать проект в maven и корректно собрать в исполняемый файл?

Answer 1

Чтобы преобразовать в текущей версии Intellij Idea CE:

  1. Правый клик на имени проекта в меню Project
  2. В контекстном меню выбрать пункт Add Framework Support...
  3. В диалоге отметить Maven
  4. OK
  5. Исправить имена пакетов в *.java и пути в/к *.fxml, так как у Maven'а свой взгляд, как все должно быть устроено, а конвертер проекта это не исправляет (потому для себя выбрал Gradle).

Чтобы получить переносимую программу под Windows нужно два плагина для Maven'a (также и для Gradle) — первый плагин собирает "толстый" jar (aka "fatjar", "jar with dependencies", "executable jar"), второй создает .exe-обертку.

Указав имена первого и второго плагина можно нагуглить тьму примеров .pom (только не забыть исправить версии плагинов на актуальные из Maven Central).

В качестве первого плагина под Maven есть несколько вариантов: maven-assembly-plugin, maven-shade-plugin, onejar-maven-plugin... (У меня для Gradle используется com.github.johnrengelman.shadow).

Есть один нюанс - если у Вас .fxml-файлы в папке с исходниками (а не в resource), то нужно указать, чтобы они тоже копировались в .jar-файл, так как по-умолчанию из папки с исходниками плагины берут только .java-файлы.

В качестве второго использую плагин для launch4j (для Maven это будет launch4j-maven-plugin, для Gradle — edu.sc.seis.launch4j).

После, как получены .jar и .exe добавляю распакованный JRE в подпапку ./jre/ рядом с .exe — комплект готов.

Можно еще и инсталятор под Windows создать — также плагином для Maven/Gradle.

Answer 2

На eclipse: Правой кнопкой по проекту -> Configure -> Convert to Maven Project

READ ALSO
Java 8, Stream API, Generics что я упустил?

Java 8, Stream API, Generics что я упустил?

Что я упустил в дженериках? Эта конструкция валидна, но убирая дженерик у стрима Stream stream = liststream(); уже не валидна?

160
Socket или Long polling в андроид ява

Socket или Long polling в андроид ява

Всем приветВ приложении хочу сделать чат администрации

186
Переход из одного фрагмента в другой при нажатии на кнопку в listview

Переход из одного фрагмента в другой при нажатии на кнопку в listview

У меня есть listvew с кастамным адаптером, в котором находится Textview, CheckBox и кнопкаЯ хочу чтобы при нажатии на imaginbutton imbutUpd, фрагмент где находится...

174
Оценка выстрела по мишени (Java, Android)

Оценка выстрела по мишени (Java, Android)

Пытаюсь реализовать оценку выстрела по мишениМишень вот такого типа:

180