具有相关 Maven 项目的最佳 Eclipse (Luna) 设置

Best Eclipse (Luna) setup with dependent Maven projects

我正在使用 Eclipse Luna,我有两个 Maven Java 项目 A 和 B,其中 A 依赖于 B。 我想同时编辑它们(并受益于 Eclipse 的重构功能等)。 最好的设置是什么?

我目前使用的设置有一些缺点,如下所述。

我先构建项目B并安装,生成一个Eclipse项目

# cd B
B # mvn package install
B # mvn eclipse:eclipse

然后我构建 A 并生成一个 Eclipse 项目:

# cd ../A
A # mvn package
A # mvn eclipse:eclipse

我现在可以将这两个项目导入到 Eclipse 中。 我的问题是 A 现在使用已安装的 B 版本,而不是当前在 Eclipse 中打开的版本。 也就是说,在每次更新 B 之后,我必须为 B 做 mvn install 并且(显然)为 A 做 mvn eclipse:eclipse 才能看到我对 B 的更改反映在 Eclipse 中。

有没有更好的方法?

在项目 AProperties 中,转到 Java Build Path,然后在 Libraries 选项卡删除对 M2_REPO/path/to/B-version.jar 的引用。然后,在 Projects 选项卡中,添加对项目 B.

的引用

请注意,如果这些是一个父模块的两个模块(即您有一个 pom.xml,在 <modules> 部分中同时包含 AB),那么 mvn eclipse:eclipse 将在该父模块上调用时自动执行此操作。

我认为你的问题是,eclipse:eclipse 为每个依赖项生成一个类路径条目,例如

<classpathentry kind="var" path="M2_REPO/com/google/guava/guava/18.0/guava-18.0.jar"/>

在文件 .classpath 中而不是

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>

我不知道哪个目标做得更好,但是当您使用 eclipse 的导入向导导入您的 maven 项目时,.classpath 文件将配置为MAVEN2_CLASSPATH_CONTAINER.

您需要插件 http://eclipse.org/m2e/ 才能使用动态依赖管理。