使用Gradle构建JavaFX应用程序

问题描述 投票:31回答:4

我正在尝试使用Gradle构建一个相对简单的JavaFX应用程序。但是,我不知道该怎么做。

我对Gradle相对较新,对于简单(非javafx)项目,我已成功使用插件javaapplication来构建和打包库和命令行应用程序。

但是,在JavaFX方面,我完全陷入困境。我读过this article,建议使用JavaFX插件,但是我只能找到这个插件的源代码,但没有关于如何实际获取它的文档使用它(在文章中他们只是从远程URL应用它,但是我的机器失败了,说我没有被授权......)

关于如何正确做到这一点的任何线索?

java gradle javafx
4个回答
17
投票

在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工作的最新分支


3
投票

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(如果我理解正确的话)


1
投票

Here is my example project with OpenJDK 12, JavaFX 12 and Gradle 5.4。它使用JavaFX Gradle插件。

  • 打开标题为“Hello World!”的JavaFX窗口。
  • 能够构建一个可运行的可运行分发zip文件(要测试的Windows)
  • 无需额外配置即可在IntelliJ中打开和运行
  • 能够从命令行运行

我希望有人发现Github项目很有用。随意克隆它。它与Unlicense一起获得许可。


0
投票

我会使用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

© www.soinside.com 2019 - 2024. All rights reserved.