刚刚下载了 m2e Eclipse插件和爱它!我想知道它使用什么web服务来解决项目的所有传递依赖关系。

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

基本上,我在问: 如何 m2e 填充存储在 ~/.m2?

有帮助吗?

解决方案

该插件的工作原理与 Maven 命令行progam 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,其 包装 element将指示下载第二个文件时要使用的文件扩展名(默认为"jar")。

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top