Maven衝突 omitted for conflict with 解決
實際開發過程中,我們可能經常遇見omitted for conflict with/omitted for duplicate。
我們在本地執行 mvn -X compile dependency:tree -Dverbose >a.log
命令可以檢查 jar包版本衝突,然後在a.log裏查找是 否存在omitted for conflict with
,如果有則表示jar包有版本衝突,
注意有版本衝突的也會顯示編譯成功(mvn dependency : tree -Deverbose | grep “omitted for conflict with”)。
根據提示的衝突,修改pom文件,即 將衝突的jar包管理起來,在節點中加入 衝突的依賴包,並確認版本 。所有依賴的版本號應使用dependencyManagement顯示管理,若要引用依賴,需要在dependencyManagement下面寫上依賴的 dependency ,不用在寫 version 。例如:
<dependencies>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>${javax.validation.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator.version}</version>
</dependency>
</dependencies>
修改爲
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>${javax.validation.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
</dependencies>