Maven依赖。更改父级的lib版本

时间:2014-05-20 08:48:33

标签: java maven

我当前的项目包含父pom文件和几个依赖项目。 在父母的pom中,我从spring指定了这些库:

<properties>
 <spring.framework.version>3.2.4.RELEASE</spring.framework.version>
</properties>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>${spring.framework.version}</version>
 </dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.framework.version}</version>
 </dependency>

项目A上包含其他所有基本类,并包含在每个子模块中。我使用在父POM中定义的spring版本。

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-aop</artifactId>
</dependency>

在项目B中我引用了项目A,但我想使用这个库的3.1.O.RELEASE。

我试图排除这些库并将特定版本放在项目的B pom文件中,但它没有起作用。我还有3.2.4.RELEASE版本。

任何想法我该如何解决?

谢谢!

1 个答案:

答案 0 :(得分:0)

在项目B的POM中明确地精确定义库版本:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.1.O.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>3.1.O.RELEASE</version>
</dependency>

它将覆盖任何传递依赖版本。 一定要精确所有Spring工件,因为有很多。最好的方法是使用spring.framework.version属性在parentManagement中包含所有Spring deps。然后将此属性覆盖为项目B中的正确版本:

<properties>
    <spring.framework.version>3.1.O.RELEASE</spring.framework.version>
</properties>