# maven-jfx-plugin
**Repository Path**: robot-king/maven-jfx-plugin
## Basic Information
- **Project Name**: maven-jfx-plugin
- **Description**: javafx-非模块化,模块化打包
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2025-04-28
- **Last Updated**: 2025-04-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
maven-jfx-plugin
javafx 打包插件,支持非模块化与非模块化打包!
> 一般情况下,第三方jar并不提供模块下信息,导致使用官方打包插件会带来诸多问题,特编写次此插件,来解决非模块化打包的问题,由于没有使用模块化,打包体积会较大
## 插件介绍
此项目为javafx-非模块打包插件,模块化打包需结合使用官方插件`javafx-maven-plugin`,官方插件的方式自行搜索
# 使用说明
> jpackage是jdk14提供的用于打包自包含Java应用程序的工具。使用方法基本是对 [官方说明文档](https://docs.oracle.com/en/java/javase/21/docs/specs/man/jpackage.html)的翻译,部分属性未包含
[用例](https://gitee.com/podigua/jfx-package-example)
## 引入依赖
```xml
io.gitee.podigua
maven-jfx-plugin
0.0.4
com.podigua.example.Launch
```
## 打包
执行 mvn jfx:package
## 参数说明
### 通用选项
imagePath: image 路径
> 模块化打包时使用此参数
type: 类型
>要创建的包的类型
>有效值为: {"app-image", "exe", "msi", "rpm", "deb", "pkg", "dmg"}
>如果未指定此选项,将创建特定于平台的默认类型。
appVersion: 版本
> 应用程序和/或包的版本(一般使用三段式版本比如1.0.2),默认值: **${project.version}**
copyright: 版权
> 应用程序的版权
description: 描述
> 应用程序的描述
icon: 图标路径
> 应用程序包的图标路径(绝对路径或相对于${project.basedir})
name: 名称
> 应用程序和/或包的名称,默认值: **${project.name}**
vendor: 供应商
> 应用程序的供应商
verbose:
> 启用详细输出 默认值: false
mainClass: 类名
> 要执行的应用程序主类的限定名称
options: vm java-options(数组)
> 传递给Java运行时的选项,例如
```xml
-Xms100m
-Xmx500m
```
arguments: 参数数组
> 传递给启动器的主类的命令行参数,例如
```xml
Lucy
18
girl
```
### Windows
winConsole
> 为应用程序创建控制台启动器,应指定需要控制台交互的应用程序,默认值: **false**
winDirChooser
> 添加对话框,以便用户选择安装产品的目录。默认值: **false**
winHelpUrl: url
> 用户可以获取更多信息或技术支持的URL
winMenu
> 请求为此应用程序添加开始菜单快捷方式默认值: **false**
winMenuGroup: menu-group-name
> 将此应用程序放置在的开始菜单组
winPerUserInstall
> 将此应用程序放置在的开始菜单组。默认值: **false**
winShortcut
> 请求为此应用程序创建桌面快捷方式。默认值: **false**
winShortcutPrompt
> 添加对话框,以便用户选择是否由安装程序创建快捷方式。默认值: **false**
winUpdateUrl
> 可用应用程序更新信息的URL
winUpgradeUuid: id
> 与此软件包升级相关联的UUID
### Mac
macPackageIdentifier: 标识符
> 唯一标识macOS应用程序的标识符,默认为主类名。只能使用字母数字(A-Z,a-z,0-9),连字符(-)和句点(.)字符。
macPackageName: 名称
> 在菜单栏中显示的应用程序名称,这可以与应用程序名称不同。此名称必须少于16个字符,并适合在菜单栏和应用程序信息窗口中显示。默认为应用程序名称
macPackageSigningPrefix: 前缀
> 在签署应用程序包时,此值将添加到所有需要签名但没有现有包标识符的组件之前。
macSign
> 请求对包或预定义应用程序映像进行签名。
macSigningKeychain: 钥匙链名称
> 用于搜索签名标识的钥匙链的名称,如果未指定,将使用标准钥匙链。
macSigningKeyUserName: 名称
> Apple签名标识中的团队或用户名部分
macAppStore
> 指示 jpackage 输出适用于Mac App Store。默认值: **false**
macEntitlements: 路径
> 包含在签署包中的可执行文件和库时使用的授权的文件路径
macAppCategory: 类别
> 用于构造应用程序plist中的LSApplicationCategoryType的字符串,默认值为"utilities"。
### Linux
linuxPackageName:
> Linux软件包的名称,默认为应用程序名称
linuxDebMaintainer: 邮件地址
> .deb包的维护者
linuxMenuGroup: 菜单组名称
> 将此应用程序放置在的菜单组
linuxShortcut
> 为应用程序创建快捷方式,默认值: **false**
### 用于创建应用程序包的选项
aboutUrl: url
> 应用程序主页的URL
installDir: 路径
> 应用程序安装目录的绝对路径(在macOS或Linux上),或安装目录的相对子路径,如“Program Files”或“AppData”(在Windows上)
resourceDir:资源路径
> 用于覆盖jpackage资源的路径,根据平台不通,读取:${project.basedir/javafx},下的**mac**,**windows**,**linux**文件夹,不需要配置,文件夹存在即可
### 资源目录
通过向此目录添加替换资源,可以覆盖jpackage的图标、模板文件和其他资源。jpackage将在资源目录中按特定名称查找文件。**读取:${project.basedir/javafx},下的**mac**,**windows**,**linux**文件夹**
#### 仅在Linux上运行时考虑的资源目录文件:
{launcher-name}.png
> 应用程序启动器图标,默认资源为JavaApp.png
{launcher-name}.desktop
> 与xdg-desktop-menu命令一起使用的桌面文件,用于已注册文件关联的应用程序启动器和/或具有图标的应用程序启动器 ,默认资源为template.desktop
#### 仅在构建Linux DEB/RPM安装程序时考虑的资源目录文件:
{package-name}-{launcher-name}.service
> 注册为后台服务类型应用程序的应用程序启动器的systemd单元文件,默认资源为unit-template.service
>
#### 仅在构建Linux RPM安装程序时考虑的资源目录文件:
{package-name}.spec
> RPM规范文件,默认资源为template.spec
#### 仅在构建Linux DEB安装程序时考虑的资源目录文件:
control
> 控制文件,默认资源为template.control
copyright
> 版权文件,默认资源为template.copyright
preinstall
> 预安装shell脚本,默认资源为template.preinstall
prerm
> 预删除shell脚本,默认资源为template.prerm
postinstall
> 后安装shell脚本,默认资源为template.postinstall
postrm
> 后删除shell脚本,默认资源为template.postrm
#### 仅在Windows上运行时考虑的资源目录文件:
{launcher-name}.ico
> 应用程序启动器图标,默认资源为JavaApp.ico
{launcher-name}.properties
> 应用程序启动器可执行文件的属性文件,默认资源为WinLauncher.template
#### 仅在构建Windows MSI/EXE安装程序时考虑的资源目录文件:
-post-image.wsf
> 用于构建应用程序镜像后运行的Windows脚本文件(WSF)
main.wxs
> 主WiX项目文件,默认资源为main.wxs
overrides.wxi
> 覆盖WiX项目文件,默认资源为overrides.wxi
service-installer.exe
> 服务安装程序可执行文件,如果某些应用程序启动器注册为后台服务类型应用程序,则会考虑
{launcher-name}-service-install.wxi
> 服务安装程序WiX项目文件,如果某些应用程序启动器注册为后台服务类型应用程序,则会考虑,默认资源为service-install.wxi
{launcher-name}-service-config.wxi
> 服务安装程序WiX项目文件,如果某些应用程序启动器注册为后台服务类型应用程序,则会考虑,默认资源为service-config.wxi
InstallDirNotEmptyDlg.wxs
> 用于安装程序UI对话框检查安装目录不存在或为空的WiX项目文件,默认资源为InstallDirNotEmptyDlg.wxs
ShortcutPromptDlg.wxs
> 用于安装程序UI对话框配置快捷方式的WiX项目文件,默认资源为ShortcutPromptDlg.wxs
bundle.wxf
> 应用程序镜像组件层次结构的WiX项目文件
ui.wxf
> 用于安装程序UI的WiX项目文件,仅在构建Windows EXE安装程序时考虑的资源目录文件:WinInstaller.properties,安装程序可执行文件的属性文件,默认资源为WinInstaller.template
{package-name}-post-msi.wsf
> 用于构建EXE安装程序的嵌入式MSI安装程序后运行的Windows脚本文件(WSF)
#### 仅在macOS上运行时考虑的资源目录文件
{launcher-name}.icns
> 应用程序启动器图标,默认资源为JavaApp.icns
Info.plist
> 应用程序属性列表文件,默认资源为Info-lite.plist.template
Runtime-Info.plist
> Java运行时属性列表文件,默认资源为Runtime-Info.plist.template
.entitlements
> 签名授权属性列表文件,默认资源为sandbox.plist
### 仅在构建macOS PKG/DMG安装程序时考虑的资源目录文件:
{package-name}-post-image.sh
> 用于构建应用程序镜像后运行的Shell脚本
#### 仅在构建macOS PKG安装程序时考虑的资源目录文件:
uninstaller
> 卸载程序Shell脚本,如果某些应用程序启动器注册为后台服务类型应用程序,则会考虑,默认资源为uninstall.command.template
preinstall
> 预安装Shell脚本,默认资源为preinstall.template
postinstall
> 后安装Shell脚本,默认资源为postinstall.template
services-preinstall
> 服务包的预安装Shell脚本,如果某些应用程序启动器注册为后台服务类型应用程序,则会考虑,默认资源为services-preinstall.template
services-postinstall
> 服务包的后安装Shell脚本,如果某些应用程序启动器注册为后台服务类型应用程序,则会考虑,默认资源为services-postinstall.template
{package-name}-background.png
> 背景图片,默认资源为background_pkg.png
{package-name}-background-darkAqua.png
> 深色背景图片,默认资源为background_pkg.png
product-def.plist
> 包属性列表文件,默认资源为product-def.plist
{package-name}-{launcher-name}.plist
> 用于将应用程序启动器注册为后台服务类型应用程序的launchd属性列表文件,默认资源为launchd.plist.template
#### 仅在构建macOS DMG安装程序时考虑的资源目录文件:
{package-name}-dmg-setup.scpt
> 设置AppleScript脚本,默认资源为DMGsetup.scpt
{package-name}-license.plist
> 许可属性列表文件,默认资源为lic_template.plist
{package-name}-background.tiff
> 背景图片,默认资源为background_dmg.tiff
{package-name}-volume.icns
> 卷图标,默认资源为JavaApp.icns
# 贡献与支持
只在mac上进行了测试
您可以通过下面的方法来贡献和支持该项目:
1. 在 Gitee 上为项目加注星标
2. 给予反馈
3. 提交PR
4. 贡献您的想法建议
# 打赏列表