我正在尝试使用Gradle构建一个相对简单的JavaFX应用程序。但是,我不知道该怎么做。
我对Gradle相对较新,对于简单(非javafx)项目,我已成功使用插件java
和application
来构建和打包库和命令行应用程序。
但是,在JavaFX方面,我完全陷入困境。我读过this article,建议使用JavaFX
插件,但是我只能找到这个插件的源代码,但没有关于如何实际获取它的文档使用它(在文章中他们只是从远程URL应用它,但是我的机器失败了,说我没有被授权......)
关于如何正确做到这一点的任何线索?
在GitHub上的Here's an example Gradle JavaFX build。请注意,according to Bintray,该插件的最新版本是8.1.1,因此如果您想要最新版本,请将插件URL中的“0.3.0”替换为“8.1.1”。
需要明确的是,这是分发Gradle插件的一种非常不寻常的方式。大多数都更容易融入构建!
编辑:使用“apply plugin”https://github.com/FibreFoX/javafx-gradle-plugin工作的最新分支
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(如果我理解正确的话)
Here is my example project with OpenJDK 12, JavaFX 12 and Gradle 5.4。它使用JavaFX Gradle插件。
我希望有人发现Github项目很有用。随意克隆它。它与Unlicense一起获得许可。
我会使用gradle init
命令:
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$
在这里,我首先从github克隆一个空的存储库(许可证和自述文件除外),然后用gradle初始化。请注意,它的类型为java-application
,并使用kotlin
作为dsl
;那些可以被省略或改为,例如,--type java-library
。