我正在尝试使用Gradle构建一个相对简单的JavaFX应用程序。 但是,我不知道该怎么做。
我对Gradle相对较新,对于简单(非javafx)项目,我已成功使用插件java
和application
来构建和打包库和命令行应用程序。 / p>
然而,在JavaFX方面,我完全陷入困境。我已阅读this article,建议使用JavaFX
插件,但我只能找到此插件的源代码,但没有关于如何实际获取它的文档使用它(在文章中他们只需从远程URL应用它,但在我的机器上失败,说我没有被授权......)
有关如何正确执行此操作的任何线索?
答案 0 :(得分:17)
Here's an example Gradle JavaFX build。请注意,according to Bintray,插件的最新版本是8.1.1,因此请更换' 0.3.0'在插件网址中使用' 8.1.1'如果你想要最新的。
为了清楚起见,这是分发Gradle插件的一种非常不寻常的方式。大多数都更容易融入构建中!
编辑:使用" apply plugin" https://github.com/FibreFoX/javafx-gradle-plugin
答案 1 :(得分:1)
Here is my example project with OpenJDK 12, JavaFX 12 and Gradle 5.4。它使用JavaFX Gradle插件。
我希望有人觉得Github项目有用。随意克隆 它。它是由Unlicense授权的。
答案 2 :(得分:0)
我将gradle init
命令用作:
thufir@dur:~/NetBeansProjects$
thufir@dur:~/NetBeansProjects$ git clone git@github.com: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
。
答案 3 :(得分:0)
javafx的官方gradle插件位于https://github.com/openjfx/javafx-gradle-plugin。
我已成功将INtelliJ IDEA CE中的此插件与以下示例一起使用来说明我的build.gradle文件:
plugins {
id 'java'
id 'application'
id 'maven'
id 'maven-publish'
id 'org.openjfx.javafxplugin' version '0.0.8'
}
javafx {
// Points to JDK and its JavaFX libraries, also declares target runtime JDK
// javaRuntime = '/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk'
version = '13' // Specify javafx sdk version
modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.swing', 'javafx.media', 'javafx.graphics']
sdk = System.getenv('JAVAFX_HOME')
if (sdk == null || sdk.isBlank()) {
throw new InvalidUserDataException("JAVAFX_HOME environment variable is not set. It must be set to root folder where JAVAFX SDK is located")
}
application {
def javafxHome = System.getenv('JAVAFX_HOME')
mainClassName = 'com.foo.FooApp'
applicationName = 'foo-app'
applicationDefaultJvmArgs = [
"--module-path=${javafxHome}" + File.separator + 'lib',
'--add-modules=javafx.controls,javafx.swing,javafx.media,javafx.graphics']
println("applicationDefaultJvmArgs:" + applicationDefaultJvmArgs)
}
}
dependencies {
... ommitted ...
}