在 Eclipse 中使用 Maven 的 JavaFX 应用程序

JavaFX Application with Maven in Eclipse

想请问有没有什么方法可以把JavaFX添加到Eclipse的Maven Archetype列表中,或者有什么插件可以使用Maven构建JavaFX应用程序。

为了构建 JavaFX 应用程序,我唯一添加到 pom.xml 的是这个依赖项:

<dependency>
        <groupId>com.oracle</groupId>
        <artifactId>javafx</artifactId>
        <version>2.2</version>
        <systemPath>${java.home}/lib/ext/jfxrt.jar</systemPath>
        <scope>system</scope>
</dependency>

它只是在我的 Java8 JRE 中获取 javafx jar 以将其添加到项目中。 然后我使用 maven-assembly-plugin 构建具有依赖项的 jar。

希望对您有所帮助。

有一个 javafx-maven-plugin 可用于 maven。

在使用 Java 8 进行开发时,您只需将该插件作为构建插件放置,无需进一步依赖。

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.8.3</version>
    <configuration>
        <mainClass>your.main.class.which.extends.javafx.Application</mainClass>
    </configuration>
</plugin>

调用 mvn jfx:jartarget/jfx/app/yourapp-jfx.jar 中创建您的 javafx-application-jar,甚至在调用 mvn jfx:native.

时创建本机启动器(如 EXE 文件)

免责声明:我是 javafx-maven-plugin 的维护者。

作为一个普通的Java应用程序就可以了,因为JavaFX版本跳到了8.0。对 JavaFX 的支持是内置的。

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <id>run application</id>
                    <phase>package</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>cn.keepfight.intro.FXParamApp</mainClass>
                        <arguments>
                            <!--<argument>-Dsun.java2d.opengl=true</argument>-->
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>com.MainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

此答案是从 https://openjfx.io/openjfx-docs/#maven 上的文档复制而来的。更多详细信息(包括完整示例 pom.xml 参考)可在提供的 link 中找到。

pom 使用 JavaFX Maven 插件:

<plugins>
    <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.3</version>
        <configuration>
            <mainClass>HelloFX</mainClass>
        </configuration>
    </plugin>
</plugins>

添加maven依赖:

<dependencies>
  <dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>13</version>
  </dependency>
</dependencies>

运行 应用程序(例如,基于引用示例中的 HelloFX.java):

mvn clean javafx:run

关于其他过时答案的注释

  1. 之前引用 com.zenjava javafx-maven-plugin 的(高票)答案已经过时,因为该插件未编码为与最新的 JavaFX 版本一起使用。对于 Java 版本 10+,应该使用 org.openjfx javafx-maven-plugin
  2. 此外,对于 Java 10+,答案仅参考 程序集插件并说明 JavaFX 包含在 JDK,也已过时。 JavaFX 不再捆绑在最近的 JDK 版本中,而是作为来自 openjfx.io 的单独 SDK 或作为来自 Maven 中央存储库的一组库依赖项提供。