Создание приложения JavaFX с помощью Gradle
Я пытаюсь создать относительно простое приложение JavaFX с помощью Gradle.
Однако я не знаю, как это сделать.
Я относительно новичок в Gradle, а для простого (не-javafx) проекта я успешно использовал плагины java
и application
для создания и упаковки библиотек и приложений с командной строкой.
Тем не менее, я полностью застрял, когда дело доходит до JavaFX. Я прочитал эту статью, в которой предлагается использовать плагин JavaFX
, однако я мог только найти исходный код для этого плагина, но никакой документации о том, как на самом деле получить его для использования (в статье они просто применяют его с удаленного URL-адреса, но это не работает на моей машине, говорит, что я не авторизовался...)
Любые подсказки о том, как это сделать правильно?
Ответы
Ответ 1
Вот пример Gradle сборки JavaFX на GitHub. Обратите внимание, что согласно Bintray, последняя версия плагина - 8.1.1, поэтому замените "0.3.0" в URL-адресе плагина" 8.1.1 ', если вы хотите получить последнюю версию.
Чтобы быть понятным, это очень необычный способ распространения плагина Gradle. Большинство из них гораздо проще включить в сборку!
Изменить: обновленная вилка, которая работает с использованием "применить плагин" https://github.com/FibreFoX/javafx-gradle-plugin
Ответ 2
Решение Peter Ledbrook работает, но на всякий случай кто-то хочет решение, которое не полагается на внешние ссылки bintray, я нашел его в ожидании ответа:
1) Создал плагин JavaFX
из источника
2) Поместите его в каталог проекта libs
3) Применил это следующим образом:
buildscript {
repositories {
flatDir dirs: "../libs"
}
dependencies {
classpath "org.bitbucket.shemnon.javafxplugin:gradle-javafx-plugin:0.5.0-SNAPSHOT"
classpath files("${System.properties['java.home']}/../lib/ant-javafx.jar")
}
}
if (!project.plugins.findPlugin(org.bitbucket.shemnon.javafxplugin.JavaFXPlugin)) {
project.apply(plugin: org.bitbucket.shemnon.javafxplugin.JavaFXPlugin)
}
Обратите внимание, что включение ant -javafx в пути к классам необходимо из-за ошибки в самом плагине (если я правильно понимаю)
Ответ 3
Вот мой пример проекта с OpenJDK 12, JavaFX 12 и Gradle 5.4. Он использует плагин JavaFX Gradle.
- Открывает окно JavaFX с заголовком "Hello World!"
- Возможность создать работающий исполняемый zip файл дистрибутива (Windows для тестирования)
- Возможность открытия и запуска в IntelliJ без дополнительной настройки
- Возможность запуска из командной строки
Я надеюсь, что кто-то найдет проект Github полезным. Не стесняйтесь клонировать это. Он лицензируется с Unlicense.
Ответ 4
Я бы использовал команду gradle init
как:
[email protected]:~/NetBeansProjects$
[email protected]:~/NetBeansProjects$ git clone [email protected]:THUFIR/javaFX.git
Cloning into 'javaFX'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), 12.48 KiB | 2.08 MiB/s, done.
[email protected]:~/NetBeansProjects$
[email protected]:~/NetBeansProjects$ cd javaFX/
[email protected]:~/NetBeansProjects/javaFX$
[email protected]:~/NetBeansProjects/javaFX$ tree
.
├── LICENSE
└── README.md
0 directories, 2 files
[email protected]:~/NetBeansProjects/javaFX$
[email protected]:~/NetBeansProjects/javaFX$ gradle init --type java-application --test-framework testng --dsl kotlin
Project name (default: javaFX):
Source package (default: javaFX): net.bounceme.dur.javafx
BUILD SUCCESSFUL in 17s
2 actionable tasks: 2 executed
[email protected]:~/NetBeansProjects/javaFX$
[email protected]:~/NetBeansProjects/javaFX$ tree
.
├── build.gradle.kts
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── LICENSE
├── README.md
├── settings.gradle.kts
└── src
├── main
│ ├── java
│ │ └── net
│ │ └── bounceme
│ │ └── dur
│ │ └── javafx
│ │ └── App.java
│ └── resources
└── test
├── java
│ └── net
│ └── bounceme
│ └── dur
│ └── javafx
│ └── AppTest.java
└── resources
17 directories, 10 files
[email protected]:~/NetBeansProjects/javaFX$
здесь я сначала клонировал пустой репозиторий (за исключением лицензии и readme) из github, а затем инициализировал с помощью gradle. Обратите внимание, что он имеет тип java-application
и использует kotlin
для dsl
; они могут быть опущены или изменены, например, на --type java-library
.