Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven依赖项。更改父项';s库版本_Java_Maven - Fatal编程技术网

Java Maven依赖项。更改父项';s库版本

Java Maven依赖项。更改父项';s库版本,java,maven,Java,Maven,我当前的项目由父pom文件和两个相关项目组成。 在父级的pom中,我从spring中指定以下库: <properties> <spring.framework.version>3.2.4.RELEASE</spring.framework.version> </properties> <dependency> <groupId>org.springframework</groupId> <art

我当前的项目由父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>

3.2.4.1发布
org.springframework
SpringJDBC
${spring.framework.version}
org.springframework
春季aop
${spring.framework.version}
项目A中有一个包含其他所有基本类并包含在每个子模块中的项目。我使用在父级POM中定义的spring版本

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

org.springframework
SpringJDBC
org.springframework
春季aop
在项目B中,我引用了项目a,但我想使用此库的3.1.O.RELEASE

我试图排除这些库,并将特定版本放在项目的B pom文件中,但没有成功。我仍然有3.2.4.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>
<properties>
    <spring.framework.version>3.1.O.RELEASE</spring.framework.version>
</properties>

org.springframework
SpringJDBC
3.1.O.发布
org.springframework
春季aop
3.1.O.发布
它将覆盖任何可传递的依赖项版本。 一定要精确所有的弹簧工件,因为有很多。最好的方法是使用Spring.framework.version属性在父级的dependencyManagement中包含所有Spring Dep。然后将此属性重写为项目B中的正确版本:

<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>
<properties>
    <spring.framework.version>3.1.O.RELEASE</spring.framework.version>
</properties>

3.1.O.发布

因此,排除这些库之后,能否在项目B上运行一个mvn dependency:树,并查看谁正在过渡地带来3.2.4.Release版本?请注意,如果您确实需要某个版本,这还不够,您应该使用
[3.1.O.Release]
。有关详细信息,请参见示例。实际上,它可以工作,但需要一些小的修复。我必须将所有可传递的依赖项放在pom中(如SpringBean、SpringCore等)