【问题标题】:M2Eclipse: Resolving Maven dependencies from the Eclipse workspaceM2Eclipse:从 Eclipse 工作区解析 Maven 依赖项
【发布时间】:2016-04-15 23:36:47
【问题描述】:

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

从 Eclipse 工作区解析 Maven 依赖项 安装到本地 Maven 仓库

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

【问题讨论】:

  • 您的具体设置是什么?如果您在 Eclipse 中使用 Maven,则必须安装 M2Eclipse,否则您将无法工作。
  • 我只是想看看 M2Eclipse 是否对我们有用。我还没有设置任何东西。
  • 其实我是在问你说的“工作空间中的项目对应两个不同的 jars”是什么意思(对不起)
  • 我们有这样的案例,其中一个 java 项目用于创建两个不同的 jar(在 Java EE 的上下文中,客户端 jar 与其他 jar 是分开的)。因此项目和 jar 之间没有 1:1 的关系,所以我需要了解 M2Eclipse 的聪明程度或可定制性。
  • 您目前是否正在使用 Maven 构建您的项目?

标签: java eclipse maven m2eclipse


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    但请注意,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 的 那个 版本。

    您还需要选中 Eclipse 项目中的“解决工作区工件”选项才能使其正常工作。 (右键项目 -> 属性 -> Maven -> Resolve dependencies from Workspace Projects)

    如果您想确保 Eclipse 使用的是您工作区中的版本,而不是已安装的版本(甚至是来自远程存储库的版本),请检查 pom.xml 编辑器上的“依赖项”选项卡。 “常规”依赖项以 jar 图标显示,在工作区解析的依赖项(如 lib B)以 Eclipse 项目图标显示。

    【讨论】:

    • 这个很有用!
    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 2012-08-16
    • 2011-01-15
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2017-05-06
    • 2011-12-03
    相关资源
    最近更新 更多