2011-07-23 87 views
14

对不起,因为详细...eclipse中的Maven项目 - 部署程序集失败构建

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

这给了我6个人项目和一个项目,其中列出了所有6个项目。 (伞项目有6个模块定义在它被转换为6 eclipse项目 - 据我了解maven是如何工作的)

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

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

部署程序集 - 在A的部署程序集上,不存在部署到web-inf/lib的条目。因此,当tomcat启动时,它找不到任何必需的jar或项目B和C.因此,我添加了一个入口部署程序集:source-maven和依赖项deploy-web-inf/lib。 Tomcat出现了,我的项目A的webapp出现了。

然而,这打破了Eclipse构建 - 在构建Eclipse抱怨: “无效的类路径中发布不支持的出口项目项”

这是我看到的是因为,在构建路径,有新的条目添加到网页-inf/lib在maven-dependencies下发布/导出。删除也会从部署程序集中删除Maven条目。

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

为什么我需要这个设置是因为当我在Eclipse中对项目B和C进行更改并在Eclipse中构建它们时我想在调试项目A时看到更改。我不想运行Maven构建在B和C上耗费时间。

任何帮助,非常感谢。

我的确尝试过,包括MAVEN2_CLASSPATH_CONTAINER,但它总是空的,当tomcat运行时它找不到必要的库。 (顺便说一句,MAVEN2_CLASSPATH_CONTATINER设置为?)

这是在Eclipse Indigo Mac OSX上。

+0

是的,我想帮忙,但文本是不可读的。 –

回答

1

对于其他任何人搜索这个,似乎你也可以手动添加以下.classpath文件

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

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

右键点击项目 - >属性 - >部署大会 - >添加

+2

这比接受的答案要好得多。 – SoWeLie

+0

我同意这解决了发布错误的解决方案,但它并不能解决我所遇到的错误,因为该项目还在从常春藤拉入。 (“该项目包含具有相同存档名称的另一个依赖项”) – Marcus

+1

我今天也遇到了这个问题,但是我的部署程序集包含了这些子项目/模块。首先解决这个问题,我删除了所有的子项目/模块,并再次将它们添加到部署程序集中 – PushkarT

5

想通了..但不完全...

所以我添加行家依赖在展开组件正如我所提到早。

Maven dependency -> WEB-INF/lib 

,另外添加B项目ç还有:

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

不知怎的,这样B和C不被添加到Java构建路径发布/出口。我不知道eclipse如何知道不从Maven回购库导出B和C,而是从项目B和C本身导出它。

反正多数民众赞成其他一些天.. 现在我很高兴:)

0

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

有关插件详细信息,请参阅this SO answer。 ( - >属性 - >部署组装项目)

然后检查论文相关的项目都刻面兼容

0

如果使用Maven部署组件,您可以添加相关的项目/或Maven Java构建路径条目。 (project - > Project Facets)

0

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

确切的修复工程是。 项目A - >属性 - >部署程序集

单击添加,然后单击项目。选择B和C.重建后问题将得到修复。

7

我解决了刚这样做:

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

+1

更新项目配置实际上删除了警告......但也从部署描述符中删除项目条目:( –

+0

是的,你是对的,我还没有解决方案 – Alv21

0

如果你在你的类相同的罐子多个条目,则会出现此错误路径。所以你需要检查你的类路径并删除重复的条目。