【问题标题】:How to quickly replace a Maven Dependency with an Eclipse project?如何用 Eclipse 项目快速替换 Maven 依赖项?
【发布时间】:2014-05-11 00:07:52
【问题描述】:

我已经使用 Maven 在 Eclipse 中设置了一个动态 Web 项目。 Web 项目对其他 JAR 有很多依赖关系。 JAR 已正确添加到 Maven/Eclipse 中的 WEB-INF/lib 文件夹中。尽管许多 JAR 是其他纯 Java 项目的结果。我希望不时在 Eclipse 中用它们各自的 Java 项目表示 JAR(但不是全部)。

那么我如何快速将一个普通的 Maven 依赖 JAR 替换为它的 Eclipse 项目呢?

目前我:

  1. 删除 Maven 依赖项(右键单击 JAR,Maven -> Exlude Maven Artifact)
  2. 编辑Build路径,添加对应的Eclipse项目
  3. 还在构建路径的“导出和订购”部分中标记项目
  4. 编辑 Deployment Assembly 属性并在其中添加 Eclipse 项目(因此它在运行时进入 WEB-INF/lib)。

【问题讨论】:

    标签: java eclipse maven jar m2eclipse


    【解决方案1】:

    如果你的 web 项目是一个 maven 项目(左上角的小“m”)并且你已经安装了 M2E-WTP 插件(包含在 Keplar JavaEE 包中),这将自动发生,即当依赖项目在工作区中打开,它将是一个项目链接,如果它关闭,您的 Web 项目将使用该 jar 文件作为依赖。

    【讨论】:

    • Eclipse如何知道哪个项目对应哪个jar文件?有什么命名约定吗?
    • 它保留了所有项目的列表及其对应的 Maven 坐标 ($WORKSPACE/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties)。但是,我刚刚从您对另一个答案的评论中读到您仍在使用 Maven 1,它已经过时并且不再受现代 IDE 支持。所以,我的首要建议是:将您的项目转换为 Maven 2/3(并且请:不要混合使用 maven 1 和 maven 2 项目)
    • 我正在从 maven 1 转换为 maven 3。您的回答让我相信我的设置会变得更容易。谢谢!
    • 我现在将其中一个 Java 项目转换为 Maven 3 项目。所以它有一个 pom.xml,我可以将它作为一个 Maven 项目导入 Eclipse。但是其他使用 Java 项目的 mavenized 动态 web 项目的 Dependencies 并没有自动更改。是否可能是因为 Java 项目的版本为 SNAPSHOT 而 Web 项目取决于版本 2.6.0?是否可以将 Eclipse 配置为忽略版本号?
    • 没有。坐标必须完全匹配。
    【解决方案2】:

    如果您使用的是 M2Eclipse,我想您应该启用 Workspace resolution。 这两个项目都应该是 Maven 项目。

    如果您使用的是 mvn eclipse 插件,请确保它们都有 pom.xml 并调用:

    mvn eclipse:clean eclipse:eclipse
    

    【讨论】:

    • 我不知道 工作区分辨率 功能。感谢您的提示。我会仔细看看的。目前普通的java项目仍然是由Maven 1构建的。所以也许这是一个问题。
    • 是否需要主动开启Workspace Resolution?我没有找到它的设置。
    • 我不确定,但类似:右键单击您的 maven 项目(由 M2Eclipse 管理)> maven > 启用工作区分辨率
    • 谢谢。原来它实际上是启用的,但是该项目的版本与另一个项目中的 Maven Dependency 不同。在我将其更改为相同的版本号(SNAPSHOT)后,它就可以工作了。
    猜你喜欢
    • 2011-04-15
    • 2015-10-22
    • 2018-10-28
    • 2011-05-14
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多