web-dev-qa-db-fra.com

Construire une application JavaFX à l'aide de Gradle

J'essaie de créer une application JavaFX relativement simple à l'aide de Gradle. Cependant, je ne sais pas comment le faire.

Je suis relativement nouveau à Gradle, et pour un projet simple (non javafx), j'ai utilisé avec succès les plugins Java et application pour construire et empaqueter des bibliothèques et des applications en ligne de commande.

Cependant, je suis complètement bloqué en ce qui concerne JavaFX. J'ai lu cet article , ce qui suggère d'utiliser le plugin JavaFX, mais je n'ai pu trouver que le code source de ce plugin, mais aucune documentation sur la façon de l'obtenir réellement et de l'utiliser (dans l'article, ils l'appliquent simplement à partir d'une URL distante, mais cela échoue sur ma machine, dit que je ne suis pas autorisé ...)

Des indices sur la façon de le faire correctement?

31
Master_T

Voici un exemple de build Gradle JavaFX sur GitHub. Notez que selon Bintray , la dernière version du plugin est 8.1.1, alors remplacez le '0.3.0' dans l'URL du plugin par '8.1.1' si vous voulez le dernier.

Juste pour être clair, c'est une façon très inhabituelle de distribuer un plugin Gradle. La plupart sont beaucoup plus faciles à intégrer dans une version!

Edit : fork à jour qui fonctionne en utilisant "appliquer le plugin" https://github.com/FibreFoX/javafx-gradle -plugin

17
Peter Ledbrook

La solution de Peter Ledbrook fonctionne, mais juste au cas où quelqu'un voudrait une solution qui ne repose pas sur des liens externes bintray, j'en ai trouvé une en attendant une réponse:

1) Construit le plugin JavaFX à partir de la source
2) Placez-le dans le répertoire libs du projet
3) Appliqué comme ceci:

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)
}

Notez que l'inclusion de ant-javafx dans le chemin de classe est nécessaire en raison d'un bogue dans le plugin lui-même (si je comprends bien)

3
Master_T

Voici mon exemple de projet avec OpenJDK 12, JavaFX 12 et Gradle 5.4 . Il utilise le plugin JavaFX Gradle.

  • Ouvre une fenêtre JavaFX avec le titre "Hello World!"
  • Capable de créer un fichier Zip de distribution exécutable fonctionnel (Windows à tester)
  • Capable d'ouvrir et d'exécuter dans IntelliJ sans configuration supplémentaire
  • Capable de s'exécuter à partir de la ligne de commande

J'espère que quelqu'un trouve le projet Github utile. N'hésitez pas à le cloner. Il est autorisé avec l'Unlicense.

1
Peter Lamberg

J'utiliserais la commande gradle init comme:

thufir@dur:~/NetBeansProjects$ 
thufir@dur:~/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.
thufir@dur:~/NetBeansProjects$ 
thufir@dur:~/NetBeansProjects$ cd javaFX/
thufir@dur:~/NetBeansProjects/javaFX$ 
thufir@dur:~/NetBeansProjects/javaFX$ tree
.
├── LICENSE
└── README.md

0 directories, 2 files
thufir@dur:~/NetBeansProjects/javaFX$ 
thufir@dur:~/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
thufir@dur:~/NetBeansProjects/javaFX$ 
thufir@dur:~/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
thufir@dur:~/NetBeansProjects/javaFX$ 

ici, j'ai d'abord cloné un référentiel vide (à l'exception de la licence et du fichier Lisez-moi) de github d'abord, puis initialisé avec gradle. Notez qu'il est de type Java-application et utilise kotlin pour dsl; ceux-ci peuvent être omis ou modifiés en, par exemple, --type Java-library.

0
Thufir