问题描述:
项目打包时,类缺少依赖,操作 pom.xml -> Maven -> Reload project ,还是不生效,但是同事(别人)那里正常。
问题出现的环境:
- 可能项目是多模块项目,结构例如:
my-project
|-- pom.xml(根项目)
|-- module-1
| `-- pom.xml
|-- module-2
| `-- pom.xml
`-- module-3
`-- pom.xml
- 可能继承另一个项目(项目是快照版本),例如:
<parent>
<groupId>other.project.groupId</groupId>
<artifactId>project_artifactId</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
- 可能依赖是快照版本,例如:
<dependency>
<groupId>other.project.groupId<</groupId>
<artifactId>project_artifactId</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
二、问题分析
Maven 查找依赖的顺序是 1.本地依赖 2. 私仓 3. 中央仓库,当类出现引入错误,但是(快照)依赖配置正确,问题可能是 快照依赖没有发布到 私仓, 或者你的本地Maven 没有拉取最新的快照依赖。
在默认情况下,Maven 并不会一直拉取快照依赖。
三、解决方案
3.1 在 IDEA 中更改项目 Maven 策略

3.2 更改 Maven 快照策略
setting.xml
<repository>
<id>snapshots</id>
<url>your_snapshots_path</url>
<snapshots>
<enabled>true</enabled>
<!-- 配置快照拉取策略 -->
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
<repository>
updatePolicy可以根据自身需求配置:
- always : 总是检查最新的快照版本。
- daily : 每天检查一次远程仓库以获取最新的快照版本
- interval:X : 每隔 X 分钟检查一次远程仓库以获取最新的快照版本。
- never : 从不检查远程仓库以获取最新的快照版本。
3.3 命令方式, Maven 强制拉取快照(Snapshot)依赖而不依赖本地缓存
mvn clean install -U
本文讲述了在Maven项目打包中遇到类缺失依赖的问题,可能原因包括快照依赖未发布到私仓或本地Maven未获取最新依赖。解决方案涉及IDEA项目配置、Mavensettings.xml中设置快照策略以及使用`mvncleaninstall-U`强制更新快照依赖。
3952

被折叠的 条评论
为什么被折叠?



