[资源分享] IIDEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在问题处理

公司新项目需使用java技术栈,便使用IDEA搭建了一个多SpringBoot项目的聚合工程,因为初次使用,遇到了很多问题,maven打包时各种报错,在网上查了好多终于解决了,为巩固记忆,特作此记录。


一、先记录一下创建父子工程一些需要注意的地方:


1.创建父子工程

在IDEA中使用Spring Initializr的方式创建SpringBoot工程,GroupId为域.公司名,例如com.company,Artifact为项目名,例如testproject,主要注意父子项目保持组名一致

父项目创建好后,将.mvm、src文件夹,mvnw、mvnw.cmd文件直接删除,并修改pom.xml的packaging更改为pom。

2.创建子工程

选中父项目,鼠标右键,然后点击New—>Module,同样方式创建SpringBoot工程,注意项目的保存路径要加上'\子项目名',否则项目工程会乱掉

3.修改子项目的pom.xml文件,将其中的parent更改为对应父项目的信息,如下:


4.父项目的pom.xml中增加modules节点,并增加新增的子项目

5.添加依赖引用

一般情况下是,在父项目的pom.xml中用dependencyManagement统一版本管理,子项目中根据需要自行声明引用。

如下:

父项目pom.xml的properties中声明jar包版本号

                                spring-boot-dependencies            2.3.4.RELEASE            pom            import                                    com.alibaba            druid-spring-boot-starter            ${druid.version}                      io.jsonwebtoken        jjwt        ${jwt.version}        com.github.penggle        kaptcha        ${kaptcha.version}....

                            com.loxaump            loxaump-common            ${loxaump.version}           

dependencyManagement依赖声明

子项目中声明所需引用,为防止子项目引用时,因为依赖jar包版本不一致,导致打包时找不到对应jar包错误(maven本地中会自动下载有依赖的版本),尽量子项目中不单独声明版本号。

                org.springframework        spring-context-support                    org.springframework        spring-web                    org.springframework.boot        spring-boot-starter-security    ....

子项目dependencies


二、maven打包时报错 程序包不存在

父子项目创建好后,使用maven工具

其他的子项目依赖common项目,打包后,明明正常打好了common的jar包,在maven本地仓中也能找到对应的版本,但是在打其他项目时,仍会提示程序包 com.loxaump.common.service.contants不存在等一系列类找不到。

如下图所示:


解决方法:

SpringBoot打成jar包我们一般使用spring-boot-maven-plugin这个插件,当配置了该插件后,运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。

1.因为spring-boot-maven-plugin在打成jar包时会默认找public static void main(String[] args){***}方法,这时候如果项目有多个main方法,就有问题了,需要删掉其他的main方法,只留SpringBoot的入口main方法,或者在pom.xml中用start-class属性指定项目main方法:


2..将父项目ROOT中的spring-boot-maven-plugin更换成org.apache.maven.plugins

更改为:

encoding即为:UTF-8

修改后,在重新打包,问题解决。


补充

如果打包时,报错:Cannot resolve xxx.xxx.xxx-xxx:unknown等错误时,应该是本地maven仓库中存在多个版本的jar包,并且因为其他原因导致某个jar包下载失败,这时,就到本地仓将jar包的文件夹删除,重新使用maven打包下载即可。

转载自 http://www.soolco.com/post/85678_1_1.html

你可能感兴趣的:([资源分享] IIDEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在问题处理)