M2Eclipse:从Eclipse工作区解析Maven依赖项

时间:2016-01-11 15:33:29

标签: java eclipse maven m2eclipse

M2Eclipse主页声明该插件具有以下功能:

  

从Eclipse工作区解析Maven依赖项而不使用   安装到本地Maven存储库

由于我没有找到任何文档,我无法弄清楚这究竟意味着什么,以及如何完成。我特别感兴趣的是工作区中的项目对应于两个不同的jar(两者都包含类的部分)。

2 个答案:

答案 0 :(得分:10)

Eclipse工作区(使用M2E时)充当本地maven存储库。您签出的每个Maven项目都可以用作依赖项(就像您已将其安装在本地存储库中一样)。

例如:如果您的项目A依赖于lib B版本1.0.0并且您在版本1.0.0上检查了lib B的源代码,那么Eclipse将能够使用B的工作区版本编译A.您不会需要在本地存储库上安装lib B.

当您需要对lib进行更改并在工作区中的应用程序中对其进行测试时,这非常有用。

请注意,pom A上lib B的依赖版本和pom B上声明的B版本必须完全匹配才能生效。例如,如果您在A的pom.xml上有:

 <dependency>
        <groupId>a.b.c</groupId>
        <artifactId>B</artifactId>
        <version>1.0.0</version>
 </dependency>

您需要1.0.0版本的结帐B.

如果您需要在B上进行更改,您可能必须将您的依赖项版本更改为某些内容-SNAPSHOT(例如1.0.1-SNAPSHOT)并查看 版本的B.

您还需要选中选项&#34; Resolve workspace artifacts&#34;在你的Eclipse项目上工作。 (右键单击项目 - &gt;属性 - &gt; Maven - &gt;从Workspace项目中解析依赖项)

如果要确保Eclipse使用工作区上的版本而不是已安装的版本(甚至是远程存储库中的版本),请检查&#34;依赖关系&#34; pom.xml编辑器上的选项卡。 &#34;常规&#34;依赖关系用jar图标显示,工作区上解析的依赖关系(如lib B)用Eclipse项目图标显示。

答案 1 :(得分:2)

M2Eclipse读取工作区中已打开项目的Maven描述符(pom.xml)以解析工件,即使项目尚未安装在本地maven存储库中(命令mvn install)。

例如,您有2个项目A和B. A取决于B. 如果您正在处理这两个项目,并且两个项目都在您的工作区中打开。 Eclipse将在解析项目A的依赖项时自动构建项目B.因此,当您运行项目A时,Eclipse将确保您使用项目B的最新版本。

如果您直接使用Maven来运行项目A,Maven将从您的本地存储库获取项目B版本。因此,您必须在运行A之前安装项目B以获得最新版本(mvn install B)。