使用maven管理了两个模块,模块a(端口8081)和模块b(端口8082),模块b中引入了模块a的pom坐标(相当于在b的pom文件中导入a的依赖)。
问题如下:
如果项目a先启动,在去启动项目b,此时项目b就会报8081端口被占用,但是项目b配置的端口是8082
如果先启动项目b,项目b使用的就是项目a的端口号启动,此时项目a改掉端口号也能启动,而且项目b就感觉yaml文件没有生效一样,无论项目b改成什么端口,它启动时就是用到项目a的端口,就感觉项目b的配置文件没有生效一样,这是个什么原因?
可能是因为Maven在构建项目时使用了模块a的依赖,导致模块a被打包进了模块b中。当运行模块b时,模块a也会被加载并且占用了8081端口,因此无法启动模块b的8082端口。你可以试试把a模块排除了
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个问题可能是因为两个项目之间的依赖关系导致的。
·
当你在项目B的pom文件中引入项目A的依赖时,Maven会将项目A打包成一个JAR文件,并将其放置在项目B的classpath中。这意味着当你运行项目B时,它会使用项目A的代码和配置。
·
这种情况下,项目B的配置文件中的端口号可能被项目A的配置文件中的端口号覆盖。这可能会导致项目B使用错误的端口号启动。
·
为了解决这个问题,你可以尝试使用不同的端口号来启动这两个项目。或者你可以将项目A和B分别打成可执行的JAR文件,并将它们部署到不同的服务器上运行。
·
另外,你可以尝试在项目B的配置文件中明确指定端口号,以确保它使用正确的端口号。例如,在项目B的配置文件中添加以下内容:
server:
port: 8082
这将确保项目B在8082端口上启动,而不管项目A使用哪个端口。