即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

【Maven学习与进阶】maven-enforcer-plugin的运用

编程语言 nuaazhaofeng 32℃ 0评论

我们会经常碰到这样的问题,在pom中引入了一个jar,里面默认依赖了其他的jar包。jar包一多的时候,我们很难确认哪些jar是我们需要的,哪些jar是冲突的。此时会出现很多莫名其妙的问题,什么类找不到啦,方法找不到啦,这种可能的原因就是jar的版本不是我们所设想的版本,但是我们也不知道低版本的jar是从哪个maven里面引用的。此时我们的maven-enforcer-plugin就可以登场了。

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-enforcer-pluginartifactId>
        <version>1.4.1version>
        <executions>
          <execution>
            <id>enforceid>
            <configuration>
              <rules>
                <dependencyConvergence/>
              rules>
            configuration>
            <goals>
              <goal>enforcegoal>
            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。

这是一个小技巧,不过很管用。

转载请注明:CodingBlog » 【Maven学习与进阶】maven-enforcer-plugin的运用

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情