Maven m2eclipse检测工作区中依赖项的变化并自动安装

时间:2011-08-31 12:05:20

标签: java eclipse maven m2eclipse

我在Eclipse中使用m2eclipse发现了一个恼人的问题。

我的工作区包含2个项目,一个应用程序A和一个库B.应用程序A POM将B作为依赖项,一切正常。 (在构建应用程序时找到并使用项目依赖性)

但是,如果我更改项目B中的某些代码并且忘记了mvn:安装它,那么当我构建应用程序时,它会使用库的最后一个版本,并且它会丢失我的上一次更改。

有没有办法强制Maven / M2Eclipse检查依赖的源代码是否比最新版本的内容更新,并在安装/部署主应用程序时安装它?

或者我的方法可能是错的,或者是我遗漏的明显的东西?

4 个答案:

答案 0 :(得分:2)

您可以告诉m2eclipse使用工作空间中的解析依赖关系而不是通过正常机制。在项目属性(NOT工作区属性)中,选择Maven->从Workspace项目中解析依赖项。

Project properties Maven -> Resolve dependencies from Workspace projects

这意味着当您更改B并随后构建A时,应自动选择更改。

但是,如果您在Eclipse之外构建,则必须执行正常的mvn安装才能获得正确的依赖项。

答案 1 :(得分:1)

我不知道告诉maven首先构建库,然后构建项目的方法。您可以将两个maven命令放入脚本中并运行脚本。

或者,您可以将两个项目放在maven父项目中,然后构建父项目。这会导致所有子项目也被构建(因此在您的情况下,库和应用程序)。

答案 2 :(得分:0)

我认为你有几个选择

  1. 如果您可以更改maven项目设置,我建议您使用maven multimodule

  2. 选项二可能会解决您的问题,但在更改您的依赖项目时仍然需要手动停止B,在eclipse中为您的依赖项目执行此操作

  3. 选择图书馆B ==>属性==> Maven ==>在项目清理后调用的目标下的输入框中:==>输入:install

  4. 要将您在eclipse中对Project B所做的任何更改部署到maven本地/远程仓库,您必须在eclipse中运行Clean build,这会将最新的Library B部署到maven资源库
  5. 同时确保您的Library B版本在开发期间是SnapShot

答案 3 :(得分:0)

如果您希望在本地计算机上运行最新的快照,则应尝试设置直接从Eclipse启动。

除了避免您最初发布的问题外,它还有其他优点。

  • 不必执行中间构建步骤,这将为您节省大量时间。
  • 您无需离开IDE即可启动和停止服务器。
  • Eclipse控制台具有您无法从系统控制台获得的额外功能。
  • 您不必修改启动脚本以附加调试器。