刚刚下载了m2e
Eclipse 插件并喜欢它!我想知道它使用什么 Web 服务来解决项目的所有传递依赖项。
我假设它通过解析项目中的所有<dependency>
元素来工作pom.xml
,并使用服务来查询 Maven 的每个传递依赖项。
基本上,我在问:如何m2e
填充存储在的本地 Maven 缓存~/.m2
?
通过运行正常的 Maven 依赖解析过程;对于每个依赖,它递归地解决传递依赖。“服务”只是从任何已配置的 Maven 存储库中查询依赖项的 POM。
该插件的工作方式与Maven命令行程序 mvn 相同。
假设您项目的 POM 和 Maven 设置文件不会更改默认存储库设置 Maven 将从 Maven Central 下载文件
http://repo1.maven.org/maven2/
所以采取如下依赖:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
Maven 将使用以下 URL 约定(Maven2 存储库布局):
<Repository URL>/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>
要下载 2 个文件:
第一个是模块 POM,其包装元素将指示下载第二个文件时使用的文件扩展名(默认为“jar”)。
最后 Maven 会递归读取 POM 中列出的其他依赖关系的 POM 文件,并决定下载哪些其他模块(Dependencies of Dependencies)
我不确定 m2e 是如何具体做到的,但您可以在命令行上使用mvn dependency:tree
. 该命令支持各种输出格式:text、dot、graphml、tgf。请参阅maven 依赖插件文档。