3-10) maven多mudule工程实现
以下是步骤:
1、父工程只留下pom.xml文件,当然src文件夹可以留下,但是里面内容删完(注意:删除之前里面的还可用文件事先备份)。
2、把父工程
<packaging>jar</packaging> 改为<packaging>pom</packaging>,
然后添加父工程项目说明,最好版本号改一下,如下:
<!-- 项目说明:这里作为聚合工程的父工程 -->
<groupId>com.example.house</groupId>
<artifactId>house-parent</artifactId>
<version>1.1.0-SNAPSHOT</version>
之后再添加模块说明,这是之后要新建的子模块:
<!-- 模块说明:这里声明多个子模块 -->
<modules>
<module>house-common</module>
<module>house-biz</module>
<module>house-web</module>
</modules>
3、右击父工程名,新建第一个Module,添加必要信息,如下:
新建Module完成后目录结构如下:
把模块house-common(这是最底层的子模块)的pom.xml 的
<parent>
改成如下所示:
<parent>
<groupId>com.example.house</groupId>
<artifactId>house-parent</artifactId>
<version>1.1.0-SNAPSHOT</version>
</parent>
原来的是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
这样模块house-common就依赖于父工程了,然后把模块house-common的
<groupId>
和
<version>
删除,这样以后依赖于house-common模块的其余模块都会统一
<groupId>和<version>
即都是父工程的
<groupId>和<version>
如下:
<!-- <groupId>com.example.house</groupId>-->
<artifactId>house-common</artifactId>
<!-- <version>0.0.1-SNAPSHOT</version>-->
<name>house-common</name>
<description>Demo project for Spring Boot</description>
之后添加必要的依赖,如:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.6.1-jre</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这是最底层的子模块,注意还有其他子模块,设置有些不同。
4、新建house-biz子模块,修改过程与模块house-common大致相同,下面是不同处。
在按照模块house-common修改之后,继续在
<dependencies>
里添加
<!-- 把common模块作为依赖添加进来 -->
<dependency>
<groupId>com.example.house</groupId>
<artifactId>house-common</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
这样就可以 把house-common模块作为依赖添加进来 ,
且<groupId>和<version>
与父工程一样。可以在里面添加必要的依赖,之后新建子模块house-web,步骤与子模块house-biz相同只是要在
<dependencies>
里添加
<!-- 把biz模块作为依赖添加进来 -->
<dependency>
<groupId>com.example.house</groupId>
<artifactId>house-biz</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
当然,house-common模块的依赖就不要添加了,因为子模块house-web依赖子模块house-biz,就间接也依赖house-common模块。
相关截图:
5、把父工程的启动类复制到顶级子模块,这里就是house-web,application.properties和
模板引擎(页面)还有静态资源都复制到house-web下,即可启动,house-web的启动类应该也能启动,没试过就删了,以后有机会试试。我的项目里用了mybatis,我的mybatis配置文件和mapper映射文件都放在子模块house-biz下的resource了。
6、启动类,接口,过滤器都放在house-web模块下了,model类、通用工具类放在house-common模块下,配置类、Mapper类、service类mapper映射文件、mybatis配置文件、application.properties都放在house-biz模块下。
相关博客:
https://www.jianshu.com/p/8518a7cffd24
https://blog.csdn.net/zcf980/article/details/83040029