2016-12-06 87 views
0

使用M2Eclipse插件。项目A取决于项目B.项目B既存在于maven本地存储库中,也存在于工作区中。在调试过程中,Eclipse会忽略工作区副本并转到Maven项目B的本地存储库副本。尽管该工程存在于工作空间中,但Eclipse会转至maven项目的本地回购副本

但奇怪的是,当我从项目A的pom.xml中删除项目B时,Eclipse将转至工作区副本。

我曾尝试:

  • 禁用项目A的工作空间分辨率和重新启用它。
  • 清洁安装项目A和项目B.
  • 队更新项目A.

这些都不奏效。当我从项目A的pom.xml中删除项目B时,它工作。当我将项目B重新添加到项目A的pom.xml时,Eclipse再次转到maven本地项目B的回购副本。但是从项目A的依赖列表中删除项目B显然不是要走的路。

有没有其他人观察到这种奇怪的行为?我该怎么做才能阻止这种情况的发生?

回答

0

在Eclipse中,您可以在依赖项目(项目A)中添加到您的工作区项目(项目B)的链接,而不是Maven本地回购库中的一个。

你必须这样做,对因项目(项目A): Right click > Build path > Configure Build path...并在Projects选项卡,您可以添加您的工作区项目

+0

但不应该'm2e'处理这个? – Utku

+0

是的,但有时候,它只是没有做好。所以你必须手动执行 – DamCx

+0

我找到了。显然,有人已经将项目B对项目A的“pom.xml”的依赖版本从“TEST-SNAPSHOT”更改为“UAT-SNAPSHOT”。由于我工作区中的项目B的版本是'TEST-SNAPSHOT',因此Eclipse自然认为这不是它正在查找的版本,因此它将发送到maven本地存储库。 – Utku

0

我找到了。显然,有人已经将项目B对项目A的pom.xml依赖项的版本从TEST-SNAPSHOT更改为UAT-SNAPSHOT。由于我工作区中的项目B的版本是TEST-SNAPSHOT,因此Eclipse自然认为这不是它正在查找的版本,因此它会发送到maven本地存储库。

换句话说,项目A的pom.xml从此改变:

... 
<dependency> 
      <groupId>SomeGroupID</groupId> 
      <artifactId>Project_B</artifactId> 
      <version>TEST-SNAPSHOT</version> 
</dependency> 
... 

这样:

... 
<dependency> 
      <groupId>SomeGroupID</groupId> 
      <artifactId>Project_B</artifactId> 
      <version>UAT-SNAPSHOT</version> 
</dependency> 
... 

这是项目B在我的工作区中的pom.xml

... 
<groupId>SomeGroupID</groupId> 
<artifactId>Project_B</artifactId> 
<version>TEST-SNAPSHOT</version> 
... 

由于项目A参考UAT-SNAPSHOT版本项目B(而不是TEST-SNAPHOT版本),Eclipse自然认为我的工作空间中的项目B不是项目A正在寻找的项目。因此,Eclipse进入我的本地maven仓库。

带回家的信息是,人们应该非常仔细地检查被引用的版本以及您期望引用的项目版本是否完全匹配。

相关问题