Java 在EclipseM2e中,如何引用工作区项目?

Java 在EclipseM2e中,如何引用工作区项目?,java,eclipse,maven,m2e,Java,Eclipse,Maven,M2e,如何使用EclipseM2e引用另一个工作区项目 是否必须在项目设置中添加项目依赖项?但在这种情况下,pom中不会显示依赖关系 如果我在pom中设置它们,它将不会引用工作区中的项目,而是引用本地存储库中的jar。很烦人,有人能帮忙吗 正确的方法如下: 只使用POM文件中的dependencies部分,不要篡改Eclipse项目引用。右键单击项目,然后选择Maven>Update project Configuration以将项目重置为Maven默认设置。这样,m2e就拥有了依赖项的所有权 确保

如何使用EclipseM2e引用另一个工作区项目

是否必须在项目设置中添加项目依赖项?但在这种情况下,pom中不会显示依赖关系


如果我在pom中设置它们,它将不会引用工作区中的项目,而是引用本地存储库中的jar。很烦人,有人能帮忙吗

正确的方法如下:

  • 只使用POM文件中的dependencies部分,不要篡改Eclipse项目引用。右键单击项目,然后选择Maven>Update project Configuration以将项目重置为Maven默认设置。这样,m2e就拥有了依赖项的所有权
  • 确保所有引用的项目都在Eclipse中打开,并且启用了Maven特性
  • 检查每个项目的Maven设置,确保groupId、artifactId和version与您在Eclipse中打开的项目匹配。因此,如果您所依赖的项目在Eclipse中具有1.0.0-SNAPSHOT版本,请确保依赖项目的POM文件引用dependencies部分中的1.0.0-SNAPSHOT版本
  • 为每个项目启用工作区解析。右键单击项目,然后单击Maven>EnableWorkspace Resolution
  • 最后,如果项目仍未解决,请再次右键单击该项目,然后单击Maven>Update project
这应该能解决你的问题。如果在此之后,仍然从文件系统引用依赖项,请再次检查groupId、artifactId,尤其是每个依赖项的版本


还要检查项目中是否没有任何错误-尝试运行Maven install。

我会更进一步。 如果您曾经在项目上运行过mvn eclipse:eclipse,那么您可能会遇到麻烦。在我的eclipse项目中,我有一个“引用库”部分和一个“Maven依赖项”部分,其中包含冲突的库版本,导致eclipse和我自己不可避免地混淆


我发现最安全的方法是从命令行运行
mvneclipse:clean
,然后返回到eclipse,刷新项目,“确定”结果问题对话框,然后转到Maven>updateproject。这为我解决了所有问题。

当eclipse在导入和删除几个项目时出错时,您可能需要重建maven存储库的索引。这是我做的一件事

  • 检查eclipse是否正确地将引用的项目识别为maven项目

    在菜单栏中,单击
    窗口->显示视图->其他…

    当弹出“显示视图”窗口时,选择
    Maven->Maven存储库

    在Maven Repositories窗口中,您应该在
    Local Repositories->Workspace Projects

    中将项目视为jar文件 如果在
    工作区项目
    中找不到项目,请右键单击
    工作区项目
    ,然后选择
    重建索引

  • 更新引用项目的maven

    右键单击引用项目,
    Maven->updateproject…->好的


  • 你还需要确保你的目标是正确的

    如果不运行安装目标,则不会将其复制到存储库,也不会编译


    要了解有关目标的更多信息,请查看@nwinkler的回答,主要问题是匹配版本号

    一种常见的情况是,如果您正在开发一组彼此版本锁定的项目,例如,一个项目和一组不是非常松散耦合的库项目,因此库API可能会在相关应用程序项目版本使用的版本中发生更改,但可能会以与应用程序项目的过去或未来版本不兼容的方式进行更改

    在这样的配置中设置Maven依赖项的正确方法(也是推荐的做法)是让应用程序使用特定版本的库-因此,例如,如果重建旧版本的应用程序,它将使用以前编译时使用的库版本

    当应用程序项目的POM库依赖项设置为发布版本时(比如说
    1.0.0
    ),当应用程序和库项目都设置为快照版本时(比如说
    2.0.0-SNAPSHOT
    ),m2e将无法正确解析库版本,并且可能会下载旧版本,因此,尝试使用Eclipse特性,如“OpenDeclaration”,将以下载jar为目标(有时甚至没有源代码附件),这可能非常烦人

    解决这一问题的一种方法是将应用程序POM依赖项版本设置为一个范围,这样您就不用依赖于
    1.0.0
    ,而是依赖于
    [1.0.0-
    。有了这样一个开放的范围,m2e将很高兴地找到您的工作空间库项目。但您希望将其设置回“正确”的位置提交、构建和发布之前的版本—这可能非常容易出错

    我的解决方案是使用构建配置文件并为m2e设置自定义配置文件,如下所示:

    • 使用属性将依赖项版本设置为要发布的版本:
    。。。
    1.0.0
    我的团队
    

    • 然后“应用并关闭”

    然后,Eclipse m2e将始终看到版本范围,并将解析来自Eclipse项目的依赖项(即使您在本地Maven repo中安装了库,因为Eclipse项目将有更高的版本号),但其他构建器将看到原始的严格版本号。

    您启用了吗Maven配置中的“从工作区项目解析依赖项”?这对我很有帮助,但是引用的项目被部署为普通文件夹而不是jar文件,有没有办法改变这一点?非常感谢advanceI需要