我想知道这是否是一个微不足道的问题,我不知道。
在多模块 Maven 项目中,假设有一个“通用”模块。例如,有 5 个模块,其中 1 个模块是通用的。有没有办法确定其他4个模块是否依赖于公共模块类,即对于公共模块中的每个类,我想知道其他模块中的类共同依赖于该类?(实际上maven在这里并不重要)。eclipse本身有这个功能吗?
如果该工具提供图表表示,那就太好了。
我想知道这是否是一个微不足道的问题,我不知道。
在多模块 Maven 项目中,假设有一个“通用”模块。例如,有 5 个模块,其中 1 个模块是通用的。有没有办法确定其他4个模块是否依赖于公共模块类,即对于公共模块中的每个类,我想知道其他模块中的类共同依赖于该类?(实际上maven在这里并不重要)。eclipse本身有这个功能吗?
如果该工具提供图表表示,那就太好了。
在 Eclipse 中,您可以简单地通过选择要检查的类并按 CTRL-SHIFT-G 来搜索工作区中的引用。在这种情况下,这意味着您必须打开多模块的所有模块。缺点是您需要为您想知道的每个课程都这样做。
据我所知,Maven 不能“按类”工作,就依赖项而言,模块是它的原子元素。
您可以使用mvn dependency:tree
来获取每个模块的依赖关系,在 eclipse/intellij 企业版中,您可以使用图形表示结果,仅此而已。
基本上,您必须在编译时和运行时依赖项之间有所不同。
当然,如果您在某些类中具有“不满意”的编译时间依赖性,例如,使用 Logger 但在类路径中没有 log4j/其他相关库,您将在类编译期间收到错误,它的编译器的工作,不是行家的。
现在运行时依赖项更难跟踪,例如:如果您在某个容器内运行并且您在“提供”范围内定义您的 log4j 库依赖项,那么您依赖于容器,它将将该库带给您并且将负责所有类加载的东西。但是 Maven 如何知道容器内发生了什么?
所以,底线,你所要求的在 Maven 中是不可能的,我试图解释为什么:)
希望这可以帮助
我是开发人员之一,所以我并不公正,但我相信Restructure101非常适合您的需求。将 RS101 指向根 POM,您将看到所有 POM 的依赖关系图,如下所示:
然后,您可以通过双击将任何项目展开到您想要的任何级别,将依赖关系从一个 pom 转移到另一个 pom。在这种情况下,我深入研究了 Maven-core 以发现 maven-compat 中的代码使用了什么:
您还可以使用 Restructure101 在 pom 之间重新组织类(例如创建/改进您提到的公共 pom),例如通过将类拖到新 pom 并查看对 pom 级别依赖项的影响。操作列表被导出到您的 IDE。
配套产品 Structure101 具有相关功能,值得一试,但我更喜欢 Restructure101 的描述。