1

我在一个有很多模块(它们是 portlet)的大项目中工作,并且依赖项管理变得越来越难。我们遇到的问题是,所有 portlet 都使用了一些 jar,但仍然没有为服务器提供,所以我们将它们包含在每个 WEB-INF/lib 中,或者声明了依赖项但根本不使用,等等。
我正在努力收拾那些烂摊子,但我害怕犯错误而无法发现它,直到为时已晚。
假设我将依赖项标记为“已提供”,并且在我忘记测试的奇怪业务案例中需要它,并且服务器不提供这样的依赖项。
组织是官僚主义的,我无法访问服务器来检查给定 jar 的实际存在。一旦安装了战争,我有什么办法可以检查依赖关系,看看是否一切都在那里并且可以访问?
War 文件在 META-INF 中包含 pom.xml 的副本,因此至少有部分信息存在。
我很想看到类似的东西

INFO: Checking provided dependency org.drools-drools-core-4.0.7........done  
ERROR: Checking provided dependency org.drools-drools-compiler-4.0.7........FAIL

在日志中...

4

1 回答 1

0

没有这样的工具,因为您谈论的所有事情都发生在运行时。您必须跟踪所有ClassNotFoundException日志并找到包含给定类的工件,例如使用GrepCode。这是我前段时间想到的最好的类似案例。更容易的是通过做来检查你是否有一些已声明和未使用的依赖项或未声明和使用(作为传递)mvn dependency:analyze。它通常工作得很好,但要注意它使用 Maven 2 依赖解析,所以在使用 Maven 3 时有时会撒谎。根据我的经验,它不会经常发生,但有时会发生并且会导致一些问题。

于 2012-06-29T06:58:07.237 回答