使用Gradle

时间:2015-07-13 20:12:55

标签: java gradle javafx

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

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

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

有关如何正确执行此操作的任何线索?

4 个答案:

答案 0 :(得分:17)

GitHub上的

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插件。

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

我希望有人觉得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 ...
}