Подтвердить что ты не робот

Создание приложения JavaFX с помощью Gradle

Я пытаюсь создать относительно простое приложение JavaFX с помощью Gradle. Однако я не знаю, как это сделать.

Я относительно новичок в Gradle, а для простого (не-javafx) проекта я успешно использовал плагины java и application для создания и упаковки библиотек и приложений с командной строкой.

Тем не менее, я полностью застрял, когда дело доходит до JavaFX. Я прочитал эту статью, в которой предлагается использовать плагин JavaFX, однако я мог только найти исходный код для этого плагина, но никакой документации о том, как на самом деле получить его для использования (в статье они просто применяют его с удаленного URL-адреса, но это не работает на моей машине, говорит, что я не авторизовался...)

Любые подсказки о том, как это сделать правильно?

4b9b3361

Ответ 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.