欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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

工具:IDEA2020.2.3版本

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

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

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

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

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

如图:

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

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

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.4.1</version>

<relativePath/>

</parent>

<properties>

<start-class>com.uechv.eoffice.portal</start-class>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

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

<dependencyManagement></dependencyManagement>

1.4  在<dependencies> </dependencies>中配置<!--springboot依赖配置-->

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

<!--springboot依赖配置-->

     <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-dependencies</artifactId>

        <version>2.4.1</version>

        <type>pom</type>

        <scope>import</scope>

</dependency>      

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

例如:

<dependency>

<groupId>com.uechv.eoffice</groupId>

<artifactId>dao</artifactId>

<version>0.0.1-SNAPSHOT</version>

<type>jar</type>

</dependency>

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

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

<build>

        <plugins>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <version>3.8.1</version>

                <configuration>

                    <source>1.8</source>

                    <target>1.8</target>

                    <encoding>UTF-8</encoding>

                </configuration>

            </plugin>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <version>2.4.1</version>

            </plugin>

        </plugins>

</build>

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

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

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

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

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

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

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

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

如下图所示

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

 

六、在子项目中引入<parent></parent>

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

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

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

 

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

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

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

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

 

 

 

 

 

本文地址:https://blog.csdn.net/qq_43185915/article/details/111878697