0

刚刚下载了m2eEclipse 插件并喜欢它!我想知道它使用什么 Web 服务来解决项目的所有传递依赖项。

假设它通过解析项目中的所有<dependency>元素来工作pom.xml,并使用服务来查询 Maven 的每个传递依赖项。

基本上,我在问:如何m2e填充存储在的本地 Maven 缓存~/.m2

4

3 回答 3

3

通过运行正常的 Maven 依赖解析过程;对于每个依赖,它递归地解决传递依赖。“服务”只是从任何已配置的 Maven 存储库中查询依赖项的 POM。

于 2012-02-24T21:11:35.513 回答
2

该插件的工作方式与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 个文件:

  1. http://repo1.maven.org/maven2/log4j/log4j/1.2.16/log4j-1.2.16.pom
  2. http://repo1.maven.org/maven2/log4j/log4j/1.2.16/log4j-1.2.16.jar

第一个是模块 POM,其包装元素将指示下载第二个文件时使用的文件扩展名(默认为“jar”)。

最后 Maven 会递归读取 POM 中列出的其他依赖关系的 POM 文件,并决定下载哪些其他模块(Dependencies of Dependencies)

于 2012-02-25T10:43:12.787 回答
0

我不确定 m2e 是如何具体做到的,但您可以在命令行上使用mvn dependency:tree. 该命令支持各种输出格式:text、dot、graphml、tgf。请参阅maven 依赖插件文档

于 2012-02-24T21:18:52.113 回答