M2Eclipse:从Eclipse工作区解决Maven依赖问题

8

M2Eclipse首页指出该插件可以实现以下功能:

从Eclipse工作区中解析Maven依赖项,无需安装到本地Maven存储库

由于我没有找到任何文档,因此我不知道这是什么意思以及如何做到。我特别关注的是当工作区中的项目对应于两个不同的JAR文件(它们都包含部分类)的情况。


你的设置具体是什么?如果你正在使用Eclipse的Maven插件,你必须安装M2Eclipse才能正常工作。 - Tunaki
我们有这样的情况:一个Java项目用于创建两个不同的JAR文件(在Java EE的上下文中,客户端JAR与其他部分是分开的)。因此,项目和JAR之间不存在一对一的关系,因此我需要弄清楚M2Eclipse有多聪明或可定制。 - J Fabian Meier
你目前是否正在使用Maven构建你的项目? - Tunaki
不,我只是在尝试收集关于适合的构建工具的信息。 - J Fabian Meier
我担心这个问题有点太宽泛了。作为一个Maven爱好者,我显然会推荐它 :)。我相信你想做的事情可以用它来完成。 - Tunaki
显示剩余3条评论
2个回答

14

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

例如:如果您的项目 A 依赖于 lib B 版本 1.0.0,并且您检出了 lib B 的源代码版本为 1.0.0,则 Eclipse 将能够使用工作区版本的 B 来编译 A。您无需将 lib B 安装到本地存储库中。

这在您需要对库进行更改并在您的工作区中也有应用程序需要测试时特别有用。

请注意,对于此功能有效的 pom A 和 pom B 中的 lib B 依赖项的声明版本必须完全匹配。例如,如果在 A 的 pom.xml 中您有:

 <dependency>
        <groupId>a.b.c</groupId>
        <artifactId>B</artifactId>
        <version>1.0.0</version>
 </dependency>
你需要使用1.0.0版本的B进行结账。
如果你需要在B上进行更改,可能需要将依赖版本更改为something-SNAPSHOT(例如1.0.1-SNAPSHOT),并检出该版本的B。
此外,你还需要在Eclipse项目中勾选“解析工作区构建”选项才能使其正常工作。(右键单击项目->属性->Maven->从工作区项目解决依赖项)
如果你想确保Eclipse正在使用你的工作区版本而不是已安装版本(甚至是来自远程存储库的版本),请检查pom.xml编辑器中的“依赖项”选项卡。 “普通”依赖项显示为jar图标,解析在工作区上的依赖项(如lib B)显示为Eclipse项目图标。

这非常有用! - Eric

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)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接