M2Eclipse:从 Eclipse 工作区解决 Maven 依赖关系
M2Eclipse: Resolving Maven dependencies from the Eclipse workspace
M2Eclipse 主页指出该插件具有以下功能:
Resolving Maven dependencies from the Eclipse workspace without
installing to local Maven repository
由于我没有找到任何文档,所以我无法弄清楚这到底是什么意思以及它是如何完成的。我对工作区中的项目对应于两个不同的 jar(都包含 类 的部分)的情况特别感兴趣。
M2Eclipse 读取您在工作区中打开的项目的 Maven 描述符 (pom.xml) 以解析工件,即使该项目尚未安装在您的本地 Maven 存储库中(命令 mvn install
)。
例如,您有 2 个项目 A 和 B。A 依赖于 B。
如果您同时处理这两个项目,并且都在您的工作区中打开。 Eclipse 会在解决项目 A 的依赖关系时自动构建项目 B。因此,当您 运行 项目 A 时,Eclipse 将确保您使用的是项目 B 的最新版本。
如果你直接使用Maven 运行 项目A,Maven会从你的本地仓库中获取项目B的版本。因此,您必须在 运行ning A 之前安装项目 B 以获得最新版本 (mvn install B
)。
Eclipse 工作区(使用 M2E 时)充当本地 Maven 存储库。您签出的每个 Maven 项目都可用作依赖项(就像您已将其安装在本地存储库中一样)。
例如:如果您的项目 A 依赖于版本 1.0.0 的库 B,并且您在版本 1.0.0 上检出库 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 进行更改,您可能需要将依赖版本更改为 something-SNAPSHOT(例如 1.0.1-SNAPSHOT)并查看 that 版本 B.
您还需要检查 Eclipse 项目上的选项 "Resolve workspace artifacts" 才能使其正常工作。 (右键单击项目 -> 属性 -> Maven -> 从工作区项目解决依赖关系)
如果您想确保 Eclipse 使用的是您工作区中的版本,而不是已安装的版本(甚至是来自远程存储库的版本),请检查 pom.xml 上的 "Dependencies" 选项卡】 编辑。 "regular" 依赖项以 jar 图标显示,工作区上解析的依赖项(如 lib B)以 Eclipse 项目图标显示。
M2Eclipse 主页指出该插件具有以下功能:
Resolving Maven dependencies from the Eclipse workspace without installing to local Maven repository
由于我没有找到任何文档,所以我无法弄清楚这到底是什么意思以及它是如何完成的。我对工作区中的项目对应于两个不同的 jar(都包含 类 的部分)的情况特别感兴趣。
M2Eclipse 读取您在工作区中打开的项目的 Maven 描述符 (pom.xml) 以解析工件,即使该项目尚未安装在您的本地 Maven 存储库中(命令 mvn install
)。
例如,您有 2 个项目 A 和 B。A 依赖于 B。 如果您同时处理这两个项目,并且都在您的工作区中打开。 Eclipse 会在解决项目 A 的依赖关系时自动构建项目 B。因此,当您 运行 项目 A 时,Eclipse 将确保您使用的是项目 B 的最新版本。
如果你直接使用Maven 运行 项目A,Maven会从你的本地仓库中获取项目B的版本。因此,您必须在 运行ning A 之前安装项目 B 以获得最新版本 (mvn install B
)。
Eclipse 工作区(使用 M2E 时)充当本地 Maven 存储库。您签出的每个 Maven 项目都可用作依赖项(就像您已将其安装在本地存储库中一样)。
例如:如果您的项目 A 依赖于版本 1.0.0 的库 B,并且您在版本 1.0.0 上检出库 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 进行更改,您可能需要将依赖版本更改为 something-SNAPSHOT(例如 1.0.1-SNAPSHOT)并查看 that 版本 B.
您还需要检查 Eclipse 项目上的选项 "Resolve workspace artifacts" 才能使其正常工作。 (右键单击项目 -> 属性 -> Maven -> 从工作区项目解决依赖关系)
如果您想确保 Eclipse 使用的是您工作区中的版本,而不是已安装的版本(甚至是来自远程存储库的版本),请检查 pom.xml 上的 "Dependencies" 选项卡】 编辑。 "regular" 依赖项以 jar 图标显示,工作区上解析的依赖项(如 lib B)以 Eclipse 项目图标显示。