先执行maven的jlink打包
- jlink会根据maven的配置,在target文件夹生成jre环境包,也就是jlink文件夹里的东西
- 在jlink的bin目录里有个可以直接执行的bat文件,执行成功,即打包成功
mvn javafx:jlink
模块化
- jlink所有包都需要进行模块化,最好使用支持模块化的包,不然就需要自己进行模块化打包
- 先生成module-info.java
jdeps --ignore-missing-deps --generate-module-info . netty-all-5.0.0.Alpha2.jar
- 将原本的包反编译出来,然后将module-info.java放进反编译的文件夹里,通过javac生成module-info.class
javac -d . module-info.java
- 再将module-info.class放到模块的文件夹里,再编译进模块里
jar uf netty-all-5.0.0.Alpha2.jar -C . module-info.class
- 这样模块里就会多一个module-info.class文件,最好将模块备份一下
再执行jpackage的打包
- jpackage会根据jlink的环境包再次打包成exe文件
- --type/-t:要创建的包的类型,有效值为 "app-image"、"exe"、"msi"、"rpm"、"deb"、"pkg"、"dmg"
- --app-version:应用程序的版本
- --copyright:应用程序的版权信息
- --description:应用程序的描述
- --icon:应用程序包图标的路径,只支持ico文件
- --name/-n:应用程序和/或程序包的名称
- --dest/-d:输出文件的目的地路径
- --temp:用于创建临时文件的目录路径
- --vendor:应用程序的供应商
- --add-modules:要添加的模块列表,可以多次使用,使用jlink环境包不需要这个
- --module-path/-p:模块路径,可以多次使用,使用jlink环境包不需要这个
- --runtime-image:预定义的运行时映像路径,指向jlink环境包
非常重要
- --input/-i:包含要打包文件的输入目录路径,使用jlink环境包不需要这个
- --main-class :要执行的应用程序主类的全名,需要跟maven配置和module-info里的配置一致
非常重要
- --main-jar:包含主类的 JAR 文件的路径,使用jlink环境包不需要这个
- --module/-m:应用程序的主模块和主类,使用jlink环境包不需要这个
- --win-console:为需要控制台交互的应用程序创建控制台启动器
- --win-dir-chooser:安装时添加选择安装路径的选项
- --win-menu:在开始菜单中添加应用程序
- --win-shortcut:在桌面创建快捷方式
jpackage -t exe -n udp_server -m "udpserver/com.wdkl.udpserver.UdpServerApplication" --runtime-image target/jlink -d .\out --icon .\icon\udp.ico --app-version 1.2 --win-shortcut --win-menu --win-console