如何在多个pom文件中查找库的使用位置

时间:2010-04-08 08:57:19

标签: java maven-2

我们有多个maven项目,具体取决于我们自己的公共库。

当我们升级库时,快速找出哪些项目依赖于库(并且可能需要使用新版本)会很有用

显然,我可以手动查看所有pom文件或编写脚本来执行此操作,但这不太理想。

是否有任何提供此功能的工具。例如一个哈德森插件,Nexus,神器等?

编辑:

一些澄清:

我不想一次升级所有项目。回归测试和发布工作使得这不切实际且通常是不必要的(即使使用自动化测试和发布)。我只想要一份报告向我展示可能需要升级图书馆的项目......

许多答案都围绕着项目本身标记使用的版本。理想情况下,解决方案可以工作,以便对于给定的库我可以问这是什么用途。这看起来就像下面的Nexus问题所说的那样。

Hudson与自动下游maven构建类似。我可能会考虑用hudson插件扩展它。

5 个答案:

答案 0 :(得分:3)

我知道虽然是管理poms和jar的好工具,Artifactory没有你要问的这样的功能:(

您可能想要查看此StackOverflow问题:Look for new versions of dependencies

或者,您可以查看Versions Maven Plugin。除此之外,它还允许您扫描项目的依赖项,并生成具有更新版本的依赖项的报告。

答案 1 :(得分:1)

一种很常见的做法是在父模块的dependencyManagemen t中声明所有版本并引用依赖关系,而不是其他地方的版本。在这种情况下,您只需要更新一个POM。

答案 2 :(得分:0)

不完全符合您的要求,但Dependency Convergence report可能会有所帮助。 Here are some examples

更新:我知道我并没有完全按照我的建议回答这个问题,但是从另一个方面来做(找到所有引用给定工件的项目)需要收集所有的POM所有项目,我都不知道当前提供引用的功能的解决方案(公司存储库将是实现此功能的完美候选者)。

答案 3 :(得分:0)

我通过使用依赖版本范围自动获取最新版本来解决此问题。

  <dependency>
      <groupId>foo.xyzzy</groupId>
      <artifactId>bar</artifactId>
      <version>[1.0.0,2.0.0)</version>
  </dependency>

使用[1.0,)等版本范围来包含1.0之后的最新版本可能是有意义的。

使这项工作的诀窍是让dev和prod配置文件包含和排除公共的快照存储库,并在重新构建依赖项时使用hudson自动构建项目。

答案 4 :(得分:0)

我的搜索结束了:http://www.sonarsource.org/sonar-2-1-in-screenshots/

Sonar现在提供此功能。