使用Maven 构建、开发和打包 JavaFX 项目
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 项目相关推荐
- java项目构建ant_Ant - 项目构建 - 开发工具 - JAVA开源项目 - 开源吧
相关开源项目 Gradle: Gradle是一个基于Groovy的构建工具,它使用Groovy来编写构建脚本,支持依赖管理和多项目创建,类似Maven,但比之简单轻便.为Ivy提供了一个layer,提 ...
- DOS命令行中用MAVEN构建Java和Java Web项目
一.Maven的安装 : 1.将maven3.0解压到任一目录下,如D:\Program Files 2.配置环境变量:变量名:MAVEN_HOME 变量值:D:\Program Files\ap ...
- 使用exe4j打包javafx项目
1.项目前文见:JDK14+JAVAFX14+Maven定制jre打包瘦身,必成版 2.exe4j软件使用步骤如下: 终于完了,哈哈 *-*
- maven 命令指定配置文件打包springboot项目
再开发过程中,通常用工具集成了maven,很少直接用maven命令操作打包,记不住,麻烦 有时候工具也出现问题,只能用命令行 下面很有必要记录一下这个过程 我这里用idea编辑器,项目原因 打包本地配 ...
- 超详细的JavaFX项目的创建、构建、打包教程
目录 零.前言 一.创建JavaFX项目 二.构建JavaFX项目为jar 三.打包JavaFX项目为exe 四.总结 零.前言 最近写了一些JavaFX的程序,并将它们打包,过程中看了不少网上的博客 ...
- 使用 GraalVM 将纯 JavaFX 项目打包成 EXE
使用 GraalVM 将纯 JavaFX 项目打包成 EXE GraalVM 的环境搭建 打包不含 FXML 的纯 JavaFX 项目 打包含 FXML 的纯 JavaFX 项目 测评 在 Intel ...
- 使用Maven构建Java项目
使用Maven构建Java项目 本指南将引导您使用Maven构建一个简单的Java项目. 你会建立什么 您将创建一个提供一天中时间的应用程序,然后使用Maven进行构建. 你需要什么 约15分钟 最喜 ...
- IntelliJ IDEA 打包Maven构建的普通Java项目
本篇简单的记录一下使用idea打包maven构建的java项目. 无需复杂地在Project Structure配置atrifacts,利用maven一键即可生成可运行的jar. 一.pom.xml中 ...
- 在Eclipse中使用Maven构建Spring项目
最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...
最新文章
- Apache Tuscany 宣布停止维护
- Deformable ConvNets--Part2: Spatial Transfomer Networks(STN)
- java基础面试题整理-2021
- php dropdownlist,遇到dropdownlist
- 苹果平板怎么卸载软件_苹果TF签名丨怎么卸载testflight下载的应用?
- mysql 存储引擎接口_MySQL 的基础一(连接池, SQL接口, 查询解析器, 查询优化器, 存储引擎接口, 执行器,)...
- double类型数值比较的坑
- Linux平台代码覆盖率测试工具GCOV简介
- 计算机网络课堂笔记3.29
- java打包apk_APK打包流程
- 基于模板匹配的螺母检测(计算机视觉实验)
- 注解缓存@Cacheable、CachePut、CacheEvict、Caching使用及介绍
- 鸟哥的linux私房菜学习笔记《三十七》deamon与服务
- 植物大战僵尸:游戏中的“修改器【Python】”一定是作弊?善用增加趣味性!
- 在 QNAP(威联通)NAS 上自动查找和删除 重复文件 的方法
- IDEA 设置自动启动的浏览器
- 做vr需要什么技术? 常用的vr技术板块
- “蔚来杯“2022牛客暑期多校训练营8
- mysql extendedstatus_mysqladmin的extended-status指令查看 mysql各状态
- phpcms选择文件无法加载插件怎么办_浏览器显示无法加载插件怎么解决