JAVA中创建多模块项目
1.创建父模块删除多余文件,只留下这三个文件
2.创建子模块,删除多余文件和启动文件
删除多余文件只留下必须文件
同时在创建一个web模块
3.配置父文件中pom,设置子模块,设置parent
设置打包方式
<!-- 父模块的打包方式-->
<packaging>pom</packaging>
<!--声明子模块的依赖-->
<modules>
<module>web</module>
<module>sesrvice</module>
</modules>
设置parent
<!-- 指明继承关系-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.17</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
4.配置子模块中的parent
子模块中继承关系要改为父模块的
<parent>
<groupId>com.example</groupId>
<artifactId>rabbat-mq</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
同时web中可以引入service模块
<!-- 将另一个子模块进入进来-->
<dependency>
<groupId>com.example</groupId>
<artifactId>sesrvice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
写一个测试接口
访问进行验证
可能出现的问题:
1.注意删除相对路径、父模块中配置主启动文件
<mainClass>com.dake.shop.ShopOrderApplication</mainClass>
2.编译失败:程序包xxx不存在
解决方案:
在common子工程下的pom.xml,添加以下配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
原因分析:
common也是SpringBoot工程,SpringBoot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar。
默认情况下,这两种jar的名称相同,在不做配置的情况下,普通的jar先生成,可执行jar后生成,造成可执行jar会覆盖普通的jar。而projectA工程无法依赖common工程的可执行jar,所以编译失败:程序包xxx不存在。
添加配置后截图如下,其中common-1.0-SNAPSHOT-exec.jar为可执行jar,common-1.0-SNAPSHOT.jar为普通jar包。
3.使用scanBasePackages将service的包手动导入进来,防止在web中使用@autowirte进行引入service中方法时无法使用
版权属于:戏人看戏博客网
本文链接:https://day.nb.sb/archives/1384.html
若无注明均为戏人看戏原创,转载请注明出处,感谢您的支持!
最后更新 2023-11-23