如何辨别项目使用哪种方式
模块化是jdk9之后引入的新特性,但是打包会遇到很多问题。
1.查看项目是否都有module-info.java文件(没有就使用非模块化打包方式)
2.查看所使用依赖是否都有module-info.java(如果任何一个依赖不是模块化的,你可以使用以下连接将非模块化依赖转为模块化)!!!!我转了两天依旧不能用,心态已炸
非模块化转为模块化连接(点这里)
转换完成之后依赖有这个东西,那么你就可以使用模块化打包了。
模块化项目转为非模块化项目
1.只需要删除项目种的module-info.java
2.但是此时启动项目就会报错,你需要手动写一个启动类如上图
打包方式
1.非模块化(JDK必须是21)
<plugin>
<groupId>io.github.fvarrui</groupId>
<artifactId>javapackager</artifactId>
<version>1.7.5</version>
<configuration>
<name>hello</name>
<!--生成jre-->
<bundleJre>true</bundleJre>
<!--程序入口文件-->
<mainClass>com.example.qkimfx.Main</mainClass>
<!--生成安装程序-->
<generateInstaller>false</generateInstaller>
</configuration>
<executions>
<execution>
<id>bundling-for-windows</id>
<phase>package</phase>
<goals>
<goal>package</goal>
</goals>
<configuration>
<!--平台-->
<platform>windows</platform>
<!--生成压缩包-->
<createZipball>true</createZipball>
<winConfig>
<!--生成安装程序-->
<generateSetup>true</generateSetup>
<!--生成Msi-->
<generateMsi>true</generateMsi>
<!--标头类型 console-->
<headerType>gui</headerType>
<wrapJar>true</wrapJar>
<!--文件版本-->
<fileVersion>1.0.0.0</fileVersion>
<!--txt文件版本-->
<txtFileVersion>${project.version}</txtFileVersion>
<!--产品版本-->
<productVersion>1.0.0.0</productVersion>
<!--txt产品版本-->
<txtProductVersion>${project.version}</txtProductVersion>
<!--文件描述-->
<fileDescription>${project.description}</fileDescription>
<!--产品名称-->
<productName>${project.name}</productName>
<!--内部名称-->
<internalName>${project.name}</internalName>
<!--原始文件名-->
<originalFilename>${project.name}.exe</originalFilename>
<!--exe创建工具 winrun4j launch4j-->
<exeCreationTool>winrun4j</exeCreationTool>
<!--设置模式-->
<setupMode>installForAllUsers</setupMode>
<!--设置语言-->
<setupLanguages>
<ChineseSimplified>compiler:Languages\ChineseSimplified.isl</ChineseSimplified>
</setupLanguages>
<!--禁用目录页-->
<disableDirPage>false</disableDirPage>
<!--禁用程序组页面-->
<disableProgramGroupPage>false</disableProgramGroupPage>
<!--禁用已完成页面-->
<disableFinishedPage>false</disableFinishedPage>
<!--禁用安装后运行-->
<disableRunAfterInstall>false</disableRunAfterInstall>
<!--禁用欢迎页面-->
<disableWelcomePage>false</disableWelcomePage>
<!--创建桌面图标任务-->
<createDesktopIconTask>true</createDesktopIconTask>
<!--https://github.com/fvarrui/JavaPackager/blob/master/docs/windows-specific-properties.md-->
<icoFile>${project.basedir}/src/main/resources/img/icon.ico</icoFile>
</winConfig>
</configuration>
</execution>
</executions>
</plugin>
2.模块化(idea创建之后其实默认就是使用这种方式)
说明:1.所使用依赖必须都是模块化
点击图中插件位置
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<executions>
<execution>
<!-- Default configuration for running with: mvn clean javafx:run -->
<id>default-cli</id>
<configuration>
<mainClass>com.example.demo3/com.example.demo3.HelloApplication</mainClass>
<launcher>app</launcher>
<jlinkZipName>app</jlinkZipName>
<jlinkImageName>app</jlinkImageName>
<noManPages>true</noManPages>
<stripDebug>true</stripDebug>
<noHeaderFiles>true</noHeaderFiles>
</configuration>
</execution>
</executions>
</plugin>