Gangmax Blog

A jersey-spring maven build issue

今天在我build其它团队新加入的工程时,发生如下错误:

No versions are present in the repository for the artifact with a range [2.5.2,)
org.springframework:spring-core:jar:null

这个错误来源于该工程用到了如下的artifact:

.m2/repository/com/sun/jersey/contribs/jersey-spring/1.1.0-ea

看样子像是maven在处理该artifact时没有找到指定版本的spring-core.jar,我用的repository里肯定是有spring相关的artifacts的,这就奇怪了。上网搜了一下,在这里看到了类似的问题,那个问题最后是把“.m2/repository/com/sun/jersey/contribs/jersey-spring/1.0.3/jersey-spring-1.0.3.pom”文件中的相关dependency删除后解决的。

我也试图删除相关的dependency,但是还是有类似的错误。我想了想,感觉”jersey-spring-1.1.0-ea.pom”文件中的这一行很奇怪:

<properties>

<spring25-release-version>[2.5.2,)</spring25-release-version>
</properties>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring25-release-version}</version>
<scope>compile</scope>
</dependency>

这种“[2.5.2,)”指定version的写法我以前没见过,而报错的正是这一部分。不管这是不是maven指定version的合法写法,我想直接改成给定的版本肯定不会有错。因此我索性将其直接改成了:

<spring25-release-version>2.5.6</spring25-release-version>

再build,成功。

从”jersey-spring-1.1.0-ea.pom”的写法来看,“[2.5.2,)”应该是指定”spring”的版本不能低于2.5.2,但不知道为什么,我所使用的repository并没有正确的找到合适版本的spring artifact,所以原来的编译就会出错。换成直接指定版本,就没有问题了。

Comments