【问题标题】:Making sure all dependency versions are specified in dependencyManagement in maven确保所有依赖版本都在maven的dependencyManagement中指定
【发布时间】:2014-03-27 14:52:00
【问题描述】:

我想确保一个 maven 项目没有在模块中指定依赖版本。相反,我想强制在父 pom 的 dependencyManagement 部分中指定所有依赖版本。也就是说,如果在模块中指定了版本而不是父 pom,则构建失败。有什么办法吗?

【问题讨论】:

    标签: maven build versioning


    【解决方案1】:

    也许可以用这个插件配置(取自https://jira.codehaus.org/browse/MENFORCER-19):

    <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
              <goals>
                  <goal>analyze-dep-mgt</goal>
              </goals>
              <phase>verify</phase>
              <configuration>
                  <failBuild>true</failBuild>
                  <ignoreDirect>false</ignoreDirect>
              </configuration>
          </execution>
        </executions>
    </plugin>
    

    &lt;ignoreDirect&gt;false&lt;/ignoreDirect&gt; 将查看是否有直接覆盖,&lt;failBuild&gt;true&lt;/failBuild&gt; 将使构建失败。

    【讨论】:

    • 我见过这个,但它只有在你覆盖模块中的版本时才有效。我的意思是,我希望它不仅在事情真的被破坏时失败,而且在父 pom.xml 中强制执行指定版本的良好模式。 IE。即使模块中指定的版本没有覆盖同一包的父 pom 版本,也会失败。
    • 是的,在 analyze-dep-mgt mojo 代码中,如果子模块中列出的依赖项在 depMgt 部分中不存在,则不会引发任何问题(请参阅此处:getMismatch 方法中的svn.apache.org/repos/asf/maven/plugins/tags/…) .事实上,一个可能很简单的补丁可以增加在 depMgt 部分中使用和未声明的依赖项也失败的能力。
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2016-09-18
    • 1970-01-01
    • 2020-06-24
    • 2015-06-11
    相关资源
    最近更新 更多