我有一个多用途的专家项目。在我的pom根目录中,我有一个带有spring依赖项的父pom和DependencyManagement。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.project</groupId>
<artifactId>artifactId</artifactId>
<version>${project-version}</version>
<packaging>pom</packaging>
<!-- Parent Pom -->
<parent>
<groupId>com.company.project</groupId>
<artifactId>parent_pom</artifactId>
<version>1.0.0</version>
</parent>
<modules>
<module>artifactId-war</module>
</modules>
<properties>
<project-version>1.0.0</project-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.3.RELEASE</spring.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${spring.version}</version>
<type>pom</type> -->
<scope>import</scope>
</dependency>
....在我的artifactId-war中,我有这个pom.xml:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.project</groupId>
<artifactId>artifactId-war</artifactId>
<packaging>war</packaging>
<parent>
<groupId>com.company.project</groupId>
<artifactId>artifactId</artifactId>
<version>${project-version}</version>
</parent>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
...我的问题是,在父pom中有一个spring旧版本(4.1.8),而在我的根pom中,我使用了4.3.3版本的工件spring-framework-bom。在我的依赖项列表中,项目显示为parent_pom版本。我如何优先考虑我的pom root的依赖关系?
发布于 2016-09-29 01:16:03
您可以在artifactId-war pom中声明正确的spring依赖项。Maven通过最短路径优胜者规则解决冲突。
如果只想通过父pom进行总体控制,那么可以在父pom中定义一个属性,但仍然需要在artifactId-war pom中声明一个依赖项。
发布于 2016-09-29 01:28:36
您的artifactId-war的pom.xml有一个错误。在<parent>标记中,<groupId>应该是com.company.project而不是com.company.project.artifactId。
这样,您就不必在artifactId-war的pom.xml中特别提到spring jar版本(正如另一个答案所建议的那样)。它将从artifactId的pom.xml继承版本。
维护来自父pom的依赖版本始终是一种好的实践,而不是在子pom级别维护版本。您的子pom应该只包含您想要的依赖的groupId和artifactId。它的版本将由父pom处理。
https://stackoverflow.com/questions/39753715
复制相似问题