Maven 解決依賴沖突有以下幾種方式:
<exclusions>
標簽來排除特定的依賴項。例如:<dependency>
<groupId>group1</groupId>
<artifactId>artifact1</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>group2</groupId>
<artifactId>artifact2</artifactId>
</exclusion>
</exclusions>
</dependency>
這樣就會排除掉 group1:artifact1 依賴中的 group2:artifact2。
<dependency>
<groupId>group1</groupId>
<artifactId>artifact1</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>group2</groupId>
<artifactId>artifact2</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>group3</groupId>
<artifactId>artifact3</artifactId>
<version>3.0</version>
<exclusions>
<exclusion>
<groupId>group2</groupId>
<artifactId>artifact2</artifactId>
</exclusion>
</exclusions>
</dependency>
在上述例子中,group3:artifact3 依賴排除了 group2:artifact2,因此 Maven 會使用強制版本的 group2:artifact2。
<dependencyManagement>
標簽下,可以定義項目中所有依賴項的版本。這樣可以統一管理所有的依賴版本,避免沖突。例如:<dependencyManagement>
<dependencies>
<dependency>
<groupId>group1</groupId>
<artifactId>artifact1</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>group2</groupId>
<artifactId>artifact2</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</dependencyManagement>
這樣在項目中引入這些依賴時,不需要指定版本號,Maven 會自動使用 <dependencyManagement>
中定義的版本。
需要根據具體情況選擇合適的解決沖突的方式。