首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为依赖管理和传递依赖之间的“冲突”获取Maven依赖收敛报告?

如何为依赖管理和传递依赖之间的“冲突”获取Maven依赖收敛报告?
EN

Stack Overflow用户
提问于 2017-02-22 08:52:32
回答 1查看 899关注 0票数 3

我寻找一种方法来获得一种依赖关系收敛报告,该报告列出了在dependency-management中定义但由具有不同版本的传递依赖项引用的依赖项。

我知道maven-project-info-reports-plugin:dependency-convergence,但是这个列表只列出了dependency中定义的依赖项(和传递依赖项)之间的冲突,但是一旦我在dependency-management中定义了该依赖项,它就不会在报告中列出。

我只想有一个报告,我不想失败的建设,如果这样的“冲突”发生。

背景:

我有一个Maven-多模块项目:

  • 以前我没有使用depencency-managent,但是我使用属性来定义父pom中的依赖版本,并在每个模块的dependency部分中用该属性声明依赖项。
  • 但是我想,让我们遵循Maven最佳实践,在父depencency-managent中声明依赖项和版本,并从子项目depencency中删除version标记。

(以前)我使用maven-project-info-reports-plugin:dependency-convergence报告来发现带有版本冲突的传递依赖项。为了决定我可以“忽视”这种冲突,或者我必须做些什么来解决它。(典型的I“忽略”but级别的冲突(版本号增量0.0.X),但在主要或次要更改级别上花费更多时间处理冲突。

但是,在我将依赖项移到depencency-managent之后,maven-project-info-reports-plugin:dependency-convergence报告几乎是空的,没有发现任何问题。

EN

回答 1

Stack Overflow用户

发布于 2017-02-27 15:31:41

Maven执行器插件有额外的强制执行规则如何?

让我们在我们管理的Selenium版本和PhantomJS使用的版本之间创建一个小冲突:

代码语言:javascript
复制
<?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>de.scrum-master.stackoverflow</groupId>
  <artifactId>dependency-convergence</artifactId>
  <version>1.0-SNAPSHOT</version>

  <build>
    <plugins>
      <!-- Enforce important build rules -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforcer-rules-error</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <fail>false</fail>
              <skip>false</skip>
              <rules>
                <requireMavenVersion>
                  <version>3.2.5</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforcer-rules-warning</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <fail>false</fail>
              <skip>false</skip>
              <rules>
                <dependencyConvergence/>
              </rules>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.0-beta-6</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.codeborne</groupId>
        <artifactId>phantomjsdriver</artifactId>
        <version>1.3.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.0.1</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>com.codeborne</groupId>
      <artifactId>phantomjsdriver</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>

报告看起来如下(你必须学会阅读它):

代码语言:javascript
复制
[WARNING] 
Dependency convergence error for commons-codec:commons-codec:1.9 paths to dependency are:
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-remote-driver:2.53.0
      +-org.apache.httpcomponents:httpclient:4.5.1
        +-commons-codec:commons-codec:1.9
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-net.sourceforge.htmlunit:htmlunit:2.23
        +-commons-codec:commons-codec:1.10

[WARNING] 
Dependency convergence error for org.apache.httpcomponents:httpclient:4.5.1 paths to dependency are:
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-remote-driver:2.53.0
      +-org.apache.httpcomponents:httpclient:4.5.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-net.sourceforge.htmlunit:htmlunit:2.23
        +-org.apache.httpcomponents:httpclient:4.5.2
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-net.sourceforge.htmlunit:htmlunit:2.23
        +-org.apache.httpcomponents:httpmime:4.5.2
          +-org.apache.httpcomponents:httpclient:4.5.2

[WARNING] 
Dependency convergence error for org.seleniumhq.selenium:selenium-remote-driver:2.53.0 paths to dependency are:
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-remote-driver:2.53.0
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-chrome-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-edge-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-firefox-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-ie-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-opera-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-safari-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-support:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability the error(s) are [
Dependency convergence error for commons-codec:commons-codec:1.9 paths to dependency are:
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-remote-driver:2.53.0
      +-org.apache.httpcomponents:httpclient:4.5.1
        +-commons-codec:commons-codec:1.9
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-net.sourceforge.htmlunit:htmlunit:2.23
        +-commons-codec:commons-codec:1.10
, 
Dependency convergence error for org.apache.httpcomponents:httpclient:4.5.1 paths to dependency are:
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-remote-driver:2.53.0
      +-org.apache.httpcomponents:httpclient:4.5.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-net.sourceforge.htmlunit:htmlunit:2.23
        +-org.apache.httpcomponents:httpclient:4.5.2
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-net.sourceforge.htmlunit:htmlunit:2.23
        +-org.apache.httpcomponents:httpmime:4.5.2
          +-org.apache.httpcomponents:httpclient:4.5.2
, 
Dependency convergence error for org.seleniumhq.selenium:selenium-remote-driver:2.53.0 paths to dependency are:
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-remote-driver:2.53.0
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-chrome-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-edge-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-firefox-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-ie-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-opera-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-safari-driver:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
and
+-de.scrum-master.stackoverflow:dependency-convergence:1.0-SNAPSHOT
  +-com.codeborne:phantomjsdriver:1.3.0
    +-org.seleniumhq.selenium:selenium-java:3.0.1
      +-org.seleniumhq.selenium:selenium-support:3.0.1
        +-org.seleniumhq.selenium:selenium-remote-driver:3.0.1
]

我希望这对你有帮助,也能为你服务。

注意:我发现了在某些情况下可能发生的奇怪的小故障。但不要让它太麻烦你,基本上它运行良好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42386693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档