【Maven學習】maven-enforcer-plugin的使用


我們會經常碰到這樣的問題,在pom中引入了一個jar,里面默認依賴了其他的jar包。jar包一多的時候,我們很難確認哪些jar是我們需要的,哪些jar是沖突的。此時會出現很多莫名其妙的問題,什么類找不到啦,方法找不到啦,這種可能的原因就是jar的版本不是我們所設想的版本,但是我們也不知道低版本的jar是從哪個maven里面引用的。此時我們的maven-enforcer-plugin就可以登場了。

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                <dependencyConvergence/>
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

在進行mvn clean package的時候,會在console中打印出來沖突的jar版本和其父pom,如下:

Dependency convergence error for org.slf4j:slf4j-api1.6.1 paths to dependency are:
 
[ERROR]
Dependency convergence error for org.slf4j:slf4j-api:1.6.1 paths to dependency are:
+-org.myorg:my-project:1.0.0-SNAPSHOT
  +-org.slf4j:slf4j-jdk14:1.6.1
    +-org.slf4j:slf4j-api:1.6.1
and
+-org.myorg:my-project:1.0.0-SNAPSHOT
  +-org.slf4j:slf4j-nop:1.6.0
    +-org.slf4j:slf4j-api:1.6.0

這個時候,我們看一眼就知道應該把那個dependency中的哪個jar進行exclude。

這是一個小技巧,不過很管用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM