如何使用Jpackage打包生成JavaFX应用的分发格式
流程正确性确认
你梳理的4步流程是标准的JavaFX模块化项目打包流程,完全正确。如果追求更简化的操作,也可以直接让jpackage自动调用jlink生成自定义运行时,不需要单独执行jlink步骤,不过拆分步骤更方便调试中间产物,更推荐新手按你列的顺序操作。
IntelliJ Artifacts使用问题
可以直接用IntelliJ的Artifacts功能生成步骤2需要的jar包,只要确保打包产物里包含你的模块描述符module-info.class,且依赖的模块化构件配置正确即可。如果项目本身用Maven/Gradle管理,也可以用对应构建工具的jar任务生成,两种方式效果没有本质区别,按你的使用习惯选择即可。
依赖打包规则说明
你当前的认知有误,jlink生成的自定义运行时仅会包含JDK标准模块、以及你显式指定加入模块路径的JavaFX等模块化三方库,不会自动包含你项目引入的所有依赖。
具体处理规则分两种场景:
- 如果你所有依赖都是模块化依赖(自带
module-info.class),可以将所有依赖的模块路径一同传入jlink,直接把所有依赖打进自定义运行时,不需要再把依赖打进项目jar - 如果你有非模块化的第三方依赖,无法被jlink识别处理,这时候要么把所有依赖和项目代码一同打包成fat jar,要么单独把依赖存放在lib目录,调用jpackage时通过
--input参数引入lib目录,同时配置启动类路径即可。
内容的提问来源于stack exchange,提问作者Youssef Idraiss
相关产品推荐
相关产品推荐

