在 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:jar
在 target/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
关于其他过时答案的注释
- 之前引用
com.zenjava
javafx-maven-plugin
的(高票)答案已经过时,因为该插件未编码为与最新的 JavaFX 版本一起使用。对于 Java 版本 10+,应该使用 org.openjfx
javafx-maven-plugin
。
- 此外,对于 Java 10+,答案仅参考 程序集插件并说明 JavaFX 包含在 JDK,也已过时。 JavaFX 不再捆绑在最近的 JDK 版本中,而是作为来自 openjfx.io 的单独 SDK 或作为来自 Maven 中央存储库的一组库依赖项提供。
想请问有没有什么方法可以把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:jar
在 target/jfx/app/yourapp-jfx.jar
中创建您的 javafx-application-jar,甚至在调用 mvn jfx:native
.
免责声明:我是 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
关于其他过时答案的注释
- 之前引用
com.zenjava
javafx-maven-plugin
的(高票)答案已经过时,因为该插件未编码为与最新的 JavaFX 版本一起使用。对于 Java 版本 10+,应该使用org.openjfx
javafx-maven-plugin
。 - 此外,对于 Java 10+,答案仅参考 程序集插件并说明 JavaFX 包含在 JDK,也已过时。 JavaFX 不再捆绑在最近的 JDK 版本中,而是作为来自 openjfx.io 的单独 SDK 或作为来自 Maven 中央存储库的一组库依赖项提供。