eclipse中的Maven项目 - 部署程序集失败

时间:2011-07-23 08:08:29

标签: eclipse deployment maven

对不起是啰嗦......

我有一些现有的maven项目。我使用 Maven将它们导入Eclipse - >导入现有的Maven项目。

这给了我6个单独的项目和一个项目,列出了它下面的所有6个项目。 (该伞形项目中定义了6个模块,转换为6个eclipse项目 - 据我了解maven是如何工作的)

项目A中的一个需要另外两个项目B和C(在编译时和运行时)。

构建路径 - 在A的构建路径上,我将其中一个库作为Maven依赖项。它构建得很好。

部署程序集 - 但是,在A的部署程序集中,没有用于部署到web-inf/lib的条目。因此,当tomcat启动时,它找不到任何必需的罐子或项目B和C. 所以我在部署程序集中添加了一个条目:source - maven和依赖项部署 - web-inf / lib。 Tomcat出现了,我的项目A的webapp出现了。

然而这打破了eclipse的构建 - 构建eclipse抱怨: “无效的类路径发布导出项目条目不受支持”

我看到的是,在构建路径下,有一个新的条目被添加到web-inf / lib以在maven-dependencies下发布/导出。删除它也会从部署程序集中删除maven条目。

唯一的解决方法是在部署程序集中指定由maven生成的目标下的web-inf/lib,但这会导致项目B和C的过时副本被拾取。

为什么我需要这个设置是因为当我在Eclipse中对项目B和C进行更改并在Eclipse中构建它时,我希望在调试项目A时看到更改。我不想运行maven因为耗时而再次建立在B和C上。

非常感谢任何帮助。

我确实尝试包含MAVEN2_CLASSPATH_CONTAINER但是它总是空的,当tomcat运行时,它找不到必要的库。 (BTW MAVEN2_CLASSPATH_CONTATINER设置为什么值?)

这是在Eclipse Indigo Mac OSX上。

8 个答案:

答案 0 :(得分:37)

您需要将相关项目添加到部署程序集中。

右键单击项目 - >属性 - >部署组件 - >添加

答案 1 :(得分:7)

我解决了这个问题:

右键点击我的eclipse项目 - > Maven - >更新项目配置...

答案 2 :(得分:5)

想出来......但不完全......

所以我在部署程序集中添加了 maven dependency ,如前所述。

Maven dependency -> WEB-INF/lib

另外还添加了项目B C

B -> WEB-INF/lib and C->WEB-INF/lib

这种方式B和C不会添加到java构建路径中的发布/导出中。我不知道eclipse如何知道不从maven repo导出B和C,而是从项目B和C本身导出它。

无论如何那些其他日子...... 现在我很高兴:)

答案 3 :(得分:1)

对于搜索此内容的任何其他人,您似乎也可以手动将以下内容添加到.classpath文件中

<classpathentry combineaccessrules="false" kind="src" path="/B"/>

答案 4 :(得分:1)

通过包含Maven Dependencies,您将包含项目B和项目C的依赖项。事实证明,您还必须手动包含项目B和C.

有效的确切方法是。 项目A - &gt;属性 - &gt;部署程序集

单击“添加”,然后单击“项目”选择B和C.重建后问题将得到解决。

答案 5 :(得分:0)

我有这个问题,但我相信这些答案都没有正确解决问题。相反,他们解决m2eclipse(应该为您管理类路径和部署程序集)。对我来说,我使用m2eclipse而没有m2eclipse-wtp(一个单独的插件)的问题。

有关插件的详细信息,请参阅this SO answer

答案 6 :(得分:0)

如果将maven用于部署程序集(项目 - &gt;属性 - &gt;部署程序集),则可以添加相关项目/或maven java构建路径条目

然后检查这些相关项目是否与Facets兼容。 (项目 - &gt;项目构面)

答案 7 :(得分:0)

如果您在类路径中有多个相同jar的条目,则会发生此错误。因此,您需要检查类路径并删除重复的条目。