0
点赞
收藏
分享

微信扫一扫

IDEA打包多module springboot项目(流程纪实)


项目简介

项目下有多个module

其中client和common-lib是用于存放公共类

gateway和backend都引用到client和common-lib

web是前端项目

docs是项目文档路径

IDEA打包多module springboot项目(流程纪实)_java

将各module打包jar包

因为我的项目实际只有gateway、backend、web需要打包运行, common-lib和client都是没有启动类的,无需运行。

于是开始打包backend

IDEA打包多module springboot项目(流程纪实)_spring_02


但是可以看到报错了

Could not resolve dependencies for project…

IDEA打包多module springboot项目(流程纪实)_spring_03


根据报错信息可以看出是没有找到依赖包client

这也就说明,我们需要先打包依赖module到本地maven仓库中

于是先将两个client和common-lib打包到maven仓库中

IDEA打包多module springboot项目(流程纪实)_java_04


注意项目要切换成你要打包的module

输入命令:mvn install

IDEA打包多module springboot项目(流程纪实)_spring_05


IDEA打包多module springboot项目(流程纪实)_maven_06


打包成功后我们在本地的仓库中就可以看到这两个jar包了

IDEA打包多module springboot项目(流程纪实)_java_07


然后再重新打包gateway和backend

打包gateway成功

运行测试 java -jar xxx

发现报错

UnsupportedClassVersionError: Preview features are not enabled for com/jd_link/icdc/gateway/GatewayApplicationLoader (class file version 58.65535). Try running with '--enable-preview'

查阅相关资料发现是编译时jdk版本问题

于是找到pom.xml中定义jdk的地方

将jdk修改为1.8,同时将release标签和compilerargs标签注释掉,否则后面可能会报错无效的标记

IDEA打包多module springboot项目(流程纪实)_spring_08


另外这里的标记也注释掉

IDEA打包多module springboot项目(流程纪实)_maven_09


然后重新打包,成功,同样作用于backend上,打包成功(注:打包前先clean)

IDEA打包多module springboot项目(流程纪实)_服务器_10


IDEA打包多module springboot项目(流程纪实)_服务器_11


再次java -jar jar包名 运行项目,运行成功

后续开发后再次打包

再次打包报错

后续开发,新增了不少模块,再次打包时发现之前的打包出现了错误,具体报错定位到测试类上,因为时间关系没有细究原因,因为是测试类,之间将其删除了重新打包,打包成功了,但是运行时出错
报错内容大致如下:

this version of the Java Runtime only recognizes class file versions up to 52.0

具体如图所示

IDEA打包多module springboot项目(流程纪实)_java_12

解决

根据提示其实大概能猜测出来是版本的问题,猜测大致是java,tomcat版本问题。
我服务器上的java版本是1.8,打包时也已经将jdk申明为1.8了,而且如上所示,之前使用同样的方法是打包并且运行成功了的。现在出现了问题,于是查阅大量资料后,开始尝试网上其他的办法,汇总如下

  • jdk降级

    各module也降级

重新打包部署。这里我采用这种办法仍然不行

  • jdk升级
    上面那种办法启发了我,既然降级不行那就升级,服务器上的jdk是1.8版本的,部署采用的是14版本,所以在服务器上又安装了jdk14,并将之前在pom中的改动恢复了,还是采用jdk14,–enable-preview的注释也取消了,如下所示

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<encoding>UTF-8</encoding>
<release>14</release>
<compilerArgs>--enable-preview</compilerArgs>
<!--idea不重置language level-->
<source>11</source>
<target>11</target>
<!--idea不重置language level-->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<argLine>--enable-preview</argLine>
</configuration>
</plugin>
</plugins>

这里安装后可能会遇到多jdk切换不成功的问题,可参考解决办法如下:
​​​引用来源​​​ 1.为了从jdk1.8切换到1.7,首先做的是将环境变量中的JAVA_HOME值改成1.7的安装路径。这个是必须做的。做完bai这个在cmd下输入Java -version查看是否切换,如果ok,那就成功了,否则试试后几个方法。
2.找到控制面板,查看方式选择大图标或者小图标,找到java选项并点击进入。然后选择java栏,点击查看,将dk1.8的启用勾选去掉,并保存。然后查看是否切换。
3.找到目录C:\Windows\System32,将java.exe,javaw.exe,javaws.exe删除即可。如果是64位系统,在C:\Windows\SysWOW64下去删。
4.将环境变量Path路径中的%JAVA_HOME%\bin值移到最前面,我的是win10系统,移动后如下:
5.如果还不能切换,你可以使用 WIN + R 输入regedit 敲回车打开注册表
找到 HKEY_LOCAL_MACHINE–SOFTWARE–JavaSoft,点击Java Development Kit 更改右边 CurrentVersion的值设置为你想要的版本值(右键-更改就可以)。

将项目打包后cmd运行,运行成功

IDEA打包多module springboot项目(流程纪实)_java_13


举报

相关推荐

0 条评论