M2Eclipse主页声明该插件具有以下功能:
从Eclipse工作区解析Maven依赖项而不使用 安装到本地Maven存储库
由于我没有找到任何文档,我无法弄清楚这究竟意味着什么,以及如何完成。我特别感兴趣的是工作区中的项目对应于两个不同的jar(两者都包含类的部分)。
答案 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
)。