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?
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
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)
Voici mon exemple de projet avec OpenJDK 12, JavaFX 12 et Gradle 5.4 . Il utilise le plugin JavaFX Gradle.
J'espère que quelqu'un trouve le projet Github utile. N'hésitez pas à le cloner. Il est autorisé avec l'Unlicense.
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
.