一、问题

最近接手的一个Java的历史项目,通过Maven编译构建的。一直遇到下面异常:

1
[ERROR] Failed to read artifact descriptor for commonj.sdo:commonj.sdo:jar:2.1.1.v201112051852 [ERROR] Caused by: The following artifacts could not be resolved: commonj.sdo:commonj.sdo:pom:2.1.1.v201112051852 (absent): Could not transfer artifact

二、原因

排除Maven settings.xml文件和科学上网的问题,发现这个commonj.sdo是个Eclipse / IBM体系中的一个老古董,2.1.1.v201112051852 是Eclipse的私有构建号,在Maven Central仓库中找不到。

三、解决方法

2.1 下载jar包和pom文件

虽然不能通过Maven自动更新这个版本的jar包,但是可以手动下载。地址

2.2 安装到本地maven仓库

1
2
3
4
5
6
7
mvn install:install-file \
-Dfile=commonj.sdo-2.1.1.v201112051852.jar \
-DgroupId=commonj.sdo \
-DartifactId=commonj.sdo \
-Dversion=2.1.1.v201112051852 \
-Dpackaging=jar \
-DpomFile=commonj.sdo-2.1.1.v201112051852.pom

2.3 验证

运行mvn clean compile正常