配置文件中明明写的端口号是8801,为什么启动的时候显示成了8080
事情经过:
今天项目新建单元模块的时候,不小心把新的模块A的路径放到了模块B下面,正常A和B应该是平级的,然后修改pom文件,新建启动类以后才发现,把它移出来,这个时候再次启动B的时候怪异的事情发生了。
问题现象:
配置文件中明明写的端口号是8801,为什么启动的时候显示成了8080
问题原因:
删除以后重新生成的target代码里面也没有
问题实际原因:
还是之前学习maven项目管理的时候没有学习,看见这行代码以后就应该立马找到问题原因。以后一旦将新的模块路径到错位置,放到别的模块之下,刷新maven以后idea就会自动帮助我们生成这行代码,会将别的模块作为父模块。
<packaging>pom</packaging>
它的作用是什么,为什么pom文件中添加了它以后生成的target/com下面不会生成yml文件?
<packaging>pom</packaging>
在 Maven 项目中表示这个模块是一个 聚合模块(父模块),不是可执行的应用,也不会参与编译生成可运行的 jar
或 war
文件。
如果你重新编译或打包项目后,发现 target
目录中缺少 yml 配置文件(例如 application.yml
),常见的原因有以下几种:
✅ 1. 资源文件未放在正确目录
Maven 只会将 src/main/resources/
中的文件拷贝到 target/classes
,因此:
✔ 正确结构应为:
css
复制编辑
src/ main/ java/ resources/ application.yml
❌ 错误结构(这些不会被打包):
css
复制编辑
src/ main/ application.yml ❌ resources/ config/ application.yml ✅(会打包)
✅ 2. pom.xml
配置错误,排除了 yml 文件
检查是否有以下排除资源的配置:
xml
复制编辑
<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.yml</exclude> <!-- ❌ 这样会忽略 .yml 文件 --> </excludes> </resource> </resources> </build>
解决办法:删除或修改 excludes
,确保 .yml
不被排除。
✅ 3. 使用了多模块项目,当前模块是 <packaging>pom</packaging>
正如你前面提到的:
xml
复制编辑
<packaging>pom</packaging>
-
这类模块不会执行资源处理,也不会拷贝
.yml
文件。 -
如果你看的是父模块的
target
,它是不会生成.yml
的。
解决办法:
-
去查看具体子模块(比如
cloud-provider-hystrix-payment
)的target
目录。 -
或者把需要打包的模块设置为
<packaging>jar</packaging>
。
✅ 4. 清理未彻底或编译失败
如果你之前打包失败或部分清理不完整,有可能导致目标文件缺失。
解决方法:
bash
复制编辑
mvn clean package
或
bash
复制编辑
mvn clean install
确保构建完整重新生成。
✅ 5. IDE 没有识别资源目录
如果你使用 IntelliJ IDEA 或 Eclipse,IDE 没有正确标记 src/main/resources
为资源目录,会导致构建时 .yml
不被识别和复制。
检查点:
-
在 IDEA 中右键
src/main/resources
→Mark Directory as
→Resources Root
-
然后重新构建。
✅ 如何确认 .yml
是否被正确打包?
看是否在这个路径下生成:
bash
复制编辑
target/classes/application.yml
总结
问题 | 解决方案 |
---|---|
.yml 不在 resources 目录 |
放到 src/main/resources/ |
被排除掉 | 检查 pom.xml 中是否 <exclude> 掉了 .yml |
父模块设置为 <packaging>pom</packaging> |
去看子模块,或设置为 jar |
编译异常或缓存问题 | 重新执行 mvn clean package |
IDE 未识别资源目录 | 在 IDE 中手动标记 resources |