Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理等。使用 Maven, 可以方便地构建打包JavaFX项目。本章前提条件是你系统已经安装并且配置好了 jdk8 和 Maven,并且已经熟悉了 Maven 的相关使用。

创建 JavaFX 项目

1. 使用Maven命令行创建项目。

打开命令行或者终端,执行如下命令:

mvn archetype:generate -DgroupId=com.learn -DartifactId=javafx-learn-02 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

如果是第一次执行该命令,则会先下载一大堆东西,只要出现BUILD SUCCESS, 在其目录下生成了javafx-learn-02项目就代表成功了。

这里创建的是一个普通的 maven 项目,先把他导入到 Eclipse 中(也可以使用其他开发工具开发,比如IDEA,VsCode, sublime等等,Maven的一个好处就是可以跨工具,就算用普通的文本编辑器也可以)。

打开Eclipse, 选择顶上菜单File->Import...,打开 Eclipse 的项目导入界面。

在导入界面中选择 Existing Maven Projects工程(内容太多的话可以在输入框中搜索 Maven 过滤)。

选择刚刚创建的 Maven 项目。

点击完成,如果项目出现在左侧项目列表中,则 Maven 项目导入成功(因为我项目太多了,所以这里我 Eclipse 使用了 Working Set 模式,这样方便对项目进行分组管理,如果没采用 Working Set 模式话可以不用管 learn 那个分组,只要左侧项目里有 javafx-learn-02 项目和我截图的那个有jdk显示,有maven dependencies显示, 有src/main/java 就代表导入成功了,具体 Eclipse 的使用可以自行学习)。

2. 直接使用eclipse 创建 Maven 项目

上面是使用命令行创建 Maven 项目,使用其他 IDE 或者文本开发的开发人员呢这个比较方便,但是如果使用了 Eclipse 或者 IDEA 等支持 Maven 的 IDE 来开发的话,可以直接使用IDE来创建Maven项目。

用 Eclipse 创建 Maven 项目或者第一种方式中导入 Maven 项目的前提是 Eclipse 已经安装了 Maven 插件。不过最新的 Eclipse 基本都已经内置了 Maven 插件,建议使用最新的 Eclipse 开发。这里也不介绍了,具体安装比较简单。

打开 Eclipse,选择顶上菜单 File->New->Other...。

在打开的界面中选择 Maven Project , 可以在搜索框中输入 Maven 过滤。

下一步的界面中勾选上:create a simple project, eclipse 的 Maven 插件中提供了很多 Maven 原型(可以理解为模板)来创建 Maven 项目,这里只是简单的构建一个空的Maven 项目,所以不需要选择原型,英文比较好的应该能读懂,勾上的意思代表创建一个经典的工程,跳过原型选择。下面那一堆可以默认,我这里选择把它添加到learn 工作集下,没选用working set的可以不用管,这里不影响。

继续点击 Next, 到了下一步界面,具体填写如下。

  • Group ID:com.learn
  • Artifact ID: javafx-learn-maven-02
  • version: 0.0.1-SHAPSHOT
  • packaging: jar

具体参数都是 Maven 的基础知识,这里就不介绍了,填写完成后点击 Finish。

完成后在左侧项目中我们又新建好了一个 Maven 项目。

命令行新建的和Eclipse新建的都是差不多一样的,后面我使用javafx-learn-maven-02这个项目,命令行新建的那个只是作为示例,我这里先删掉了。

添加 Maven 的 javafx 插件。

javafx-maven-plugin 是一个 Maven 的插件,用于提供在 Maven 中管理 JavaFX 应用。比如只需要一个命令mvn jfx:run即可运行JavaFX应用,只需要一个命令mvn package jfx:native就可以打包 JavaFX 应用,很是方便。

打开项目的pom.xml,如下:

此时pom.xml是一个只包含项目基本信息的简单 xml 文件。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>javafx-learn-maven-02</artifactId><version>0.0.1-SNAPSHOT</version>
</project>

添加 javafx-maven-plugin 插件的代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>javafx-learn-maven-02</artifactId><version>0.0.1-SNAPSHOT</version><build><plugins><plugin><groupId>com.zenjava</groupId><artifactId>javafx-maven-plugin</artifactId><version>8.8.3</version><configuration><!-- 作者 --><vendor>xiangtao</vendor><!-- main方法的类 --><mainClass>com.learn.LearnMain02</mainClass><!-- 运行文件名 --><appName>${project.build.finalName}</appName><!-- 图标的位置,默认位置 src/main/deploy --><!--<deployDir>${basedir}/src/main/resources/images/ico/Flap.ico</deployDir>--><!-- 菜单 --><needMenu>true</needMenu><!-- 桌面图标 --><needShortcut>true</needShortcut></configuration></plugin></plugins></build>
</project>

在打包的时候需要把 resource 下的资源,以及使用 systemPath 导入的jar包都需要打包进去,因此继续添加 resources 配置代码:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>javafx-learn-maven-02</artifactId><version>0.0.1-SNAPSHOT</version><build><plugins><plugin><groupId>com.zenjava</groupId><artifactId>javafx-maven-plugin</artifactId><version>8.8.3</version><configuration><!-- 作者 --><vendor>xiangtao</vendor><!-- main方法的类 --><mainClass>com.learn.LearnMain02</mainClass><!-- 运行文件名 --><appName>${project.build.finalName}</appName><!-- 图标的位置,默认位置 src/main/deploy --><!--<deployDir>${basedir}/src/main/resources/images/ico/Flap.ico</deployDir>--><!-- 菜单 --><needMenu>true</needMenu><!-- 桌面图标 --><needShortcut>true</needShortcut></configuration></plugin></plugins><resources><resource><!--把src/main/java目录下的properties、xm文件打包打进程序中--><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><!--把src/main/resources目录下的properties、xm文件打包打进程序中--><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include><include>**/*.fxml</include><include>**/*.setting</include></includes><filtering>false</filtering></resource><resource><!--把lib/目录下第三方jar包打进程序中,如systemPath目录下的jar--><directory>lib/</directory><includes><include>**/*.jar</include></includes><filtering>false</filtering></resource></resources></build>
</project>

编写代码

新建一个包 com.learn, 在其添加 LearnMain02 类,然后添加 main 方法。 这里主类需要和 javafx-maven-plugin 插件里 mainClass 属性配置的要保持一致。

让改类继承“javafx.application.Application”类,实现其start方法,然后添加main方法,main方法里启动应用,代码如下:

package com.learn;import javafx.application.Application;
import javafx.stage.Stage;public class LearnMain02  extends Application {@Overridepublic void start(Stage primaryStage) throws Exception{}public static void main(String[] args) {launch(args);}
}

在 JavaFX 中,应用程序是由Stage、Scene、界面组件、容器布局等组成,Stage可以简单理解为代表真个应用程序的窗口,其中Scene包含在其中,Scene下面包含了各种界面布局、UI控件等组件

。具体可以阅读 舞台(Stage)、 场景(Scene) 等相关章节。

我们根据上面的思路创建一个界面:

package com.learn;import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;public class LearnMain02 extends Application {@Overridepublic void start(Stage primaryStage) throws Exception{//创建一个BorderPane布局BorderPane rootPane = new BorderPane();//创建一个Label标签,将其添加到布局的中心Label label = new Label("Hello World!!!");rootPane.setCenter(label);// 创建一个800*640大小的Scene,关联其布局Scene scene = new Scene(rootPane, 800, 640);// 设置Stage的Scene、标题,然后显示primaryStage.setScene(scene);primaryStage.setTitle("JavaFX Maven 学习示例");primaryStage.show();}public static void main(String[] args) {launch(args);}
}

运行结果如下:

使用插件命令运行、打包

1. Liunx(Deepin)

打开命令行或者终端,进入到项目根目录。

执行命令mvn jfx:run 运行 javafx 项目:

执行命令 mvn jfx:native 或者 mvn package jfx:native 打包 javafx 项目:

则在target/jfx目录下会生成打包后的deb文件和能直接运行的二进制文件。

deb文件可以直接安装后使用:

javafx-learn-maven-02-0.0.1-SNAPSHOT 目录下的二进制文件可以直接运行:

2. Window

CMD打开项目执行 mvn jfx:run 可以运行项目:

执行 mvn jfx:native 或者 mvn package jfx:native 打包项目:

如果电脑里安装了 InnoSetup 的话它还会打包为一个点击下一步,下一步类似的安装的程序,我电脑里没有安装该软件,所以跳过了安装程序的生成,只打包了一个可直接运行的绿色软件。

双击exe运行:

3. Mac

终端打开项目执行 mvn jfx:run 可以运行项目:

执行 mvn jfx:native 或者 mvn package jfx:native 打包项目:

打包成功后,在 target/jfx/native 目录下会生成打包文件,这里我点击javafx...app运行效果如下:

使用Maven 构建、开发和打包 JavaFX 项目相关推荐

  1. java项目构建ant_Ant - 项目构建 - 开发工具 - JAVA开源项目 - 开源吧

    相关开源项目 Gradle: Gradle是一个基于Groovy的构建工具,它使用Groovy来编写构建脚本,支持依赖管理和多项目创建,类似Maven,但比之简单轻便.为Ivy提供了一个layer,提 ...

  2. DOS命令行中用MAVEN构建Java和Java Web项目

    一.Maven的安装 : 1.将maven3.0解压到任一目录下,如D:\Program Files 2.配置环境变量:变量名:MAVEN_HOME   变量值:D:\Program Files\ap ...

  3. 使用exe4j打包javafx项目

    1.项目前文见:JDK14+JAVAFX14+Maven定制jre打包瘦身,必成版 2.exe4j软件使用步骤如下: 终于完了,哈哈 *-*

  4. maven 命令指定配置文件打包springboot项目

    再开发过程中,通常用工具集成了maven,很少直接用maven命令操作打包,记不住,麻烦 有时候工具也出现问题,只能用命令行 下面很有必要记录一下这个过程 我这里用idea编辑器,项目原因 打包本地配 ...

  5. 超详细的JavaFX项目的创建、构建、打包教程

    目录 零.前言 一.创建JavaFX项目 二.构建JavaFX项目为jar 三.打包JavaFX项目为exe 四.总结 零.前言 最近写了一些JavaFX的程序,并将它们打包,过程中看了不少网上的博客 ...

  6. 使用 GraalVM 将纯 JavaFX 项目打包成 EXE

    使用 GraalVM 将纯 JavaFX 项目打包成 EXE GraalVM 的环境搭建 打包不含 FXML 的纯 JavaFX 项目 打包含 FXML 的纯 JavaFX 项目 测评 在 Intel ...

  7. 使用Maven构建Java项目

    使用Maven构建Java项目 本指南将引导您使用Maven构建一个简单的Java项目. 你会建立什么 您将创建一个提供一天中时间的应用程序,然后使用Maven进行构建. 你需要什么 约15分钟 最喜 ...

  8. IntelliJ IDEA 打包Maven构建的普通Java项目

    本篇简单的记录一下使用idea打包maven构建的java项目. 无需复杂地在Project Structure配置atrifacts,利用maven一键即可生成可运行的jar. 一.pom.xml中 ...

  9. 在Eclipse中使用Maven构建Spring项目

    最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...

最新文章

  1. 使用雪花id或uuid作为Mysql主键,被老板怼了一顿!
  2. Maven最全教程,看了必懂
  3. MindMotion ISP 协议 PDF版本
  4. python下载大文件-python requests 下载大文件不完整
  5. Resin的安全性ip限制
  6. S5PV210的内存映射
  7. “为什么中国没有Apache基金会这样的组织?”
  8. 如何在form初始化时自动隐藏FOLDER列
  9. Python全栈学习_day010作业
  10. 三菱modbusRTU通讯实例_modbus通讯协议详解 | 每位工控人都应该了解
  11. roseha 11 用VM虚拟机创建集群测试
  12. We‘re sorry but XX doesn‘t work properly without JavaScript enabled. Please enable it to continue
  13. 这几本书看了之后在工作生活上都是有用的
  14. 工作中经常遇到的232、485、TTL信号
  15. android 高德静态地图api,静态地图-API文档-开发指南-Web服务 API | 高德地图API
  16. 二叉树 | 二叉树的镜像(翻转)
  17. Visual studio 无法下载安装
  18. 启动asp.net state service服务提示1058
  19. pta-7-2 最大公约数与最小公倍数 (15 分)
  20. JavaScript触发a标签事件

热门文章

  1. python用vim做ide的语法检查
  2. 英语面试准备(01) - 读招聘广告
  3. java仿射变换_仿射变换和透射变换
  4. 5G下CDN技术与产业发展变化,将会如何引领时代发展?
  5. 如何使用私有网络部署全球同服游戏服务
  6. QM入门演示指导材料一
  7. lrzsz命令的用法
  8. 计算机系张馨文,2020届魅力毕业生 | 【信息学部计算机与信息学院】张馨文——努力且热爱,做一朵乐观而坚韧的向日葵...
  9. RGB颜色值对照表_用于OpenCV绘图
  10. 三种Div高度自适应的方法