背景: 我有多个项目在业务逻辑上使用相同的逻辑,因此我决定将共享部分拆分并在两个项目中引用它。 例子: 假设有一个人力资源应用程序和一个会计应用程序需要共享业务,在这种情况下让我们说 count hours 是计算类(让我们称其为 calc)的一部分。 HR 和 Accounting 两个应用程序都有自己的 gitlab 存储库。也有独立的部署,并且使用上传到 nexus 存储库的 calc 包。 问题: 我想知道是否有一种方法可以通过包名称在存储库之间查找使用 calc 包的项目。
如果您想要本地检查项目,则可以找到每个项目的依赖树:mvn dependency:tree 这将给出所有被使用的项目的(传递性)依赖关系。如果对每个项目执行此操作,然后在其中搜索您的软件包名称,这应该能够找到使用它的所有项目,或者至少具有对其的依赖关系。
我不确定如何通过软件包名称计算依赖关系。但是: 如果您可以访问源代码,则可以扫描您的项目中的pom.xml并查找依赖项 如果您可以访问运行时库,则可以扫描这些jar文件的/META-INF/maven/*/*/pom.xml并检查依赖项 无论哪种方式,您都应该能够找到使用Calc的jar文件。 没有办法询问Calc从哪里使用。
mvnrepository.com
和github.com
这样的网站可以显示其他项目中依赖包的使用/计数。我猜它们通过解析系统上所有的 pom/gradle/etc 构建文件来实现这一点。如果没有现有的解决方案/插件,你就需要自己编写一些东西。 - slindenaumvn deploy
发布了ACC和HR的jar包,那么所有基于Maven的解决方案都应该可以工作 - 即使在本地机器上没有源代码可用。也许元数据将被缓存在本地机器上,但这应该会自动在后台发生。 - cyberbrain