idea搭建微服务多模块项目时遇到的问题汇总

目录

1.Module "XXX" does exist

2.Module "A" must not contain source root "xxx". The root already belongs to module "B"

(1)分析

(2)解决方法

 3.子模块的maven管理器呈灰色、yaml文件的小图标不正常、无法使用引入包中的功能(比如springboot依赖的@SpringBootApplication注解)

(1)异常状态下的截图

 (2)分析

(3)解决方案


1.Module "XXX" does exist

该问题常出现在执行【删除某个子模块后,又新建一个同名子模块】这种操作。

解决方法:进入父工程的"Load/Unload Modules"选项,然后将对应module unload即可。

2.Module "A" must not contain source root "xxx". The root already belongs to module "B"

报错信息如下图

(1)分析

一个maven项目/模块下的目录通常分为:Sources、Tests、Resources、TestResources、Excluded这几种,如下图所示:

对于多模块项目而言,为了便于管理,通常会按照【父模块+子模块】这种方式构建项目。

父模块用于指定各种开发包的版本号,只起到约定的作用,自身在编译时不会引入开发包;

子模块继承父模块中的配置信息,自动进行版本仲裁,在编译时会正式引入依赖中规定的各类包。

知道这些以后,再看报错信息:“Module "A" must not contain source root "xxx". The root already belongs to module "B",可知 source root 这类目录发生了重复,那么一定是父模块的目录结构出了问题,因为父模块只需保留pom.xml文件即可。

(2)解决方法

将父模块Modules设置中的Source Folders、Test Sources Folders等全部删除即可,下面两张图是正常的项目Modules配置:

 3.子模块的maven管理器呈灰色、yaml文件的小图标不正常、无法使用引入包中的功能(比如springboot依赖的@SpringBootApplication注解)

(1)异常状态下的截图

具体表现形式如下:

①maven管理器呈现灰色

②yml文件前的图标异常

 (2)分析

如果模块自身的pom.xml没有写错的话,那么问题就不是项目的问题,而是maven管理器的问题。新建的maven项目都会有一个与之匹配的包管理器(有独立的生命周期),现在这个管理器呈现灰色说明其本身肯定是在某个地方被关了或者屏蔽了,从而造成无法使用当前模块依赖中的功能这一后果。

(3)解决方案

进入当前项目的setting中,找到Maven的Ignored Files配置,可以发现这里的屏蔽列表里把一个模块给勾选了,那么将其取消勾选即可,然后保存退出。

接着在maven管理器中点击刷新

 如此一番处理后,可以发现子模块恢复正常了,如下图:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
搭建一个多模块的Spring Boot项目,可以按照以下步骤: 1. 创建一个Maven项目,并选择“Create a simple project(创建一个简单项目)”选项。 2. 在pom.xml文件中添加以下插件: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` 这个插件可以将Spring Boot项目打包成一个可执行的jar文件。 3. 在项目根目录下创建一个子模块,比如叫做“web”。可以使用以下Maven命令创建子模块: ``` mvn archetype:generate -DgroupId=com.example -DartifactId=web -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` 这个命令会在根目录下创建一个名为“web”的子模块。 4. 在子模块的pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 这个依赖会让子模块成为一个Spring Boot Web应用程序。 5. 在子模块中创建一个Spring Boot应用程序,比如叫做“WebApplication”。可以创建一个类似于以下的类: ```java @SpringBootApplication public class WebApplication { public static void main(String[] args) { SpringApplication.run(WebApplication.class, args); } } ``` 这个类使用了Spring Boot的@SpringBootApplication注解,这个注解会自动配置Spring应用程序。 6. 在子模块中创建一个Controller,比如叫做“HelloController”。可以创建一个类似于以下的类: ```java @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello World!"; } } ``` 这个Controller定义了一个名为“/hello”的路由,并返回了一个字符串。 7. 运行项目。可以使用以下Maven命令运行项目: ``` mvn spring-boot:run ``` 这个命令会启动Spring Boot应用程序,并在控制台输出日志。可以在浏览器中访问“http://localhost:8080/hello”来测试应用程序。 8. 添加其他子模块。可以按照以上步骤添加其他子模块,比如一个数据库模块、一个服务模块等等。这样就可以将应用程序拆分成多个模块,每个模块负责不同的功能。 注意事项: - 每个子模块都应该有一个唯一的artifactId。 - 如果子模块之间有依赖关系,可以在pom.xml文件中添加相关的依赖。 - 可以在根目录的pom.xml文件中添加公共依赖,这些依赖会被所有子模块继承。 - 如果使用了Spring Cloud等微服务框架,可以将每个子模块打包成一个独立的服务,然后使用注册中心来管理它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值