IDEA 的maven构建springboot父子工程,踩过的坑

工具:IDEA2020.2.3版本

在构建大型maven项目时,通常采用的工程类型,基本为聚合工程,我们公司也一样,决定引入springboot微服务架构,采用idea+maven+springboot的方式构建。由于springboot搭建聚合工程,与传统的spring+maven构建聚合工程,方式有部分出入,刚开始,搭建了几次,都没成功,经过多次尝试,最后搭建成功了,这里一方面,分享一下自己在搭建springboot聚合工程的注意事项,另一方面,给自己保留搭建资料,以免以后忘记了,再踩坑,具体搭建方法如下:

一:通过spring initializr 创建一个父子工程 例如:父工程admin,

IDEA 的maven构建springboot父子工程,踩过的坑_第1张图片

在创建父工程的过程,有建议采用maven方式创建父工程,以后,搭建不成功,可能是因为在尝试阶段,不得其法所致。

  1. 1 将admin(父工程)下的 src 、.mvn、mvnw、mvnw.cmd 这四个文件全部删除

如图:

IDEA 的maven构建springboot父子工程,踩过的坑_第2张图片

    1. 2在父工程(admin)中,保留springboot 的配置,修改打包方式为”pom”,同时,在中,统一编码等版本号为UTF-8

org.springframework.boot

spring-boot-starter-parent

2.4.1

com.uechv.eoffice.portal

UTF-8

UTF-8

1.8

1.3  手动配置依赖管理项,在构建聚合工程时,maven并不会给我们设定依赖管理项,得由我们自己配置:

1.4  在 中配置

--以前尝试搭建的时候,就是忽略了这个细节,导致多构建聚合工程都不成功

    

        org.springframework.boot

        spring-boot-dependencies

        2.4.1

        pom

        import

      

1.5  在父工程中引入其他子模块的依赖并注明打包方式-type的属性为:jar

例如:

com.uechv.eoffice

dao

0.0.1-SNAPSHOT

jar

1.6    在中添加一下属性添加maven-compiler-plugin属性,如果不配置该属性,执行package方法时会报错:程序包org.springframework.boot不存在。

【注】这个地方也是一大坑,之前构建时,也没注意到这个细节,后面参考同行的搭建有提到这里,所以在搭建时,添加进去,果然没问题

       

           

                org.apache.maven.plugins

                maven-compiler-plugin

                3.8.1

               

                    1.8

                    1.8

                    UTF-8

               

           

           

                org.springframework.boot

                spring-boot-maven-plugin

                2.4.1

           

       

二、 在子工程搭建时,注意配置的包路径,一定要在父工程之下,否则,构建出来的结果,并不是自己想要的,因为我采用的时IDEA2020.2.3版本开发工具,搭建的路径可能和其他开发版本不太一样,但与IDEA2020.2.2开发工具差别不大,

例如:我搭建时的父工程路径为:com.xxx.xxx.admin

IDEA 的maven构建springboot父子工程,踩过的坑_第3张图片

三、创建子工程时,直接在admin工程上右键 > new > module 创建子模块。

【注意】:子工程创建的路径应为:例如: com.xxx.xxx.admin.dao,在其他版本的IDEA可能是”/”表示路径

IDEA 的maven构建springboot父子工程,踩过的坑_第4张图片

四、只保留入口(web)的Application.java的main方法,其他子项目的main方法全部删除,否则,打包不成功

五、只保留入口(web)的application.properties,其他子项目的application.properties全部删除

如下图所示

IDEA 的maven构建springboot父子工程,踩过的坑_第5张图片

 

六、在子项目中引入

 IDEA 的maven构建springboot父子工程,踩过的坑_第6张图片

七、springboot打包方式,先对子工程的包挨个install打包,最后执行父工程 install打包

IDEA 的maven构建springboot父子工程,踩过的坑_第7张图片

 

[备注]:如果不保留springboot父工程中的,项目打包时就会出现如下报错:

****程序包org.springframework.boot不存在

****程序包org.springframework.boot.autoconfigure不存在

【这个坑】原因是,springboot针对spring-bootautoconfigurewebtest的版本控制,是通过父工程中的版本号进行版本控制,这一点与maven构建spring聚合工程的版本控制有点区别

 

 

 

 

 

你可能感兴趣的:(java,spring,boot,maven)