COLA Maven Archetype Light 5.0.0 生成项目后依赖版本错误
一、问题描述
我在使用 Alibaba COLA 的 Maven 脚手架创建项目时,选择的脚手架版本为:
text com.alibaba.cola:cola-archetype-light:5.0.0
项目创建成功后,在 IDEA 中执行 Maven install 时构建失败,提示找不到以下依赖:
text Could not find artifact com.alibaba.cola:cola-component-test-container:jar:4.4.0-SNAPSHOT
Maven 同时提示:
text Try to run Maven import with -U flag (force update snapshots)
但检查生成项目的根目录 pom.xml 后发现,该依赖版本被设置为了 4.4.0-SNAPSHOT。我也在阿里云 Maven 中央仓库中查询过,没有找到对应的 4.4.0-SNAPSHOT 版本。
后续我将该依赖版本从 4.4.0-SNAPSHOT 修改为 5.0.0 后,项目可以正常执行 Maven install。
因此初步判断:cola-archetype-light:5.0.0 的项目模板中,cola-component-test-container 依赖版本仍然引用了旧的 4.4.0-SNAPSHOT,导致脚手架生成的新项目无法正常构建。
二、本地环境
- 操作系统:macOS
- 设备型号:MacBook Pro M2 Pro
- JDK 版本:JDK 17
- Maven 版本:Apache Maven 3.9.11
- IDE:IntelliJ IDEA
- Maven Archetype:com.alibaba.cola:cola-archetype-light:5.0.0
三、复现步骤
- 打开 IntelliJ IDEA
- 创建新项目
- 选择 Maven Archetype 创建方式
- 选择 COLA 对应脚手架版本:
text com.alibaba.cola:cola-archetype-light:5.0.0
- 项目创建完成后,执行 Maven install
bash mvn clean install
- 构建失败,提示缺少依赖:
text Could not find artifact com.alibaba.cola:cola-component-test-container:jar:4.4.0-SNAPSHOT
四、实际结果
执行 Maven install 时,项目构建失败,原因是生成项目中引用了不存在的依赖版本:
xml com.alibaba.cola cola-component-test-container 4.4.0-SNAPSHOT
Maven 无法从仓库中解析:
text com.alibaba.cola:cola-component-test-container:jar:4.4.0-SNAPSHOT
五、期望结果
使用 cola-archetype-light:5.0.0 生成的项目,应该默认引用与当前脚手架版本匹配的 COLA 依赖版本,使新项目可以直接完成构建。
例如:
xml com.alibaba.cola cola-component-test-container 5.0.0
或者通过统一的版本变量进行管理,避免脚手架模板中残留旧版本号。
六、临时解决方案
目前本地可以通过手动修改生成项目中的依赖版本解决:
将:
xml 4.4.0-SNAPSHOT
修改为:
xml 5.0.0
修改后重新执行:
bash mvn clean install
项目可以正常构建。
七、初步原因分析
初步判断是 cola-archetype-light:5.0.0 的 archetype 模板中,cola-component-test-container 依赖版本没有同步升级,仍然保留了旧的 4.4.0-SNAPSHOT。
该版本在 Maven 仓库中无法解析,因此导致通过脚手架生成的新项目无法直接构建。
八、建议修复方式
建议将 cola-archetype-light 模板中的:
xml com.alibaba.cola:cola-component-test-container:4.4.0-SNAPSHOT
调整为:
xml com.alibaba.cola:cola-component-test-container:5.0.0
或者改为引用统一版本变量,例如:
xml ${cola.version}
以避免后续发布新版本时出现模板依赖版本未同步的问题。
Source: alibaba/COLA