题
刚刚下载了 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个档案:
- http://repo1.maven.org/maven2/log4j/log4j/1.2.16/log4j-1.2.16.pom
- 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依赖插件文档.
不隶属于 StackOverflow