首页 文章

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

提问于
浏览
14

对不起是冗长的......

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

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

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

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

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

然而这打破了eclipse的构建 - 构建eclipse抱怨: "Invalid classpath publish export Project entries not supported"

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

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

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

任何帮助深表感谢 .

我确实尝试包含 MAVEN2_CLASSPATH_CONTAINER 但是它总是空的,当tomcat运行时它找不到必要的库 . (顺便说一句, MAVEN2_CLASSPATH_CONTATINER 设定为什么值?)

这是在Eclipse Indigo Mac OSX上 .

8 回答

  • 0

    弄清楚..但不完全......

    所以我在前面提到的部署程序集中添加了 maven dependency .

    Maven dependency -> WEB-INF/lib
    

    另外还添加了 project BC

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

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

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

  • 1

    我解决了这样做:

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

  • 0

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

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

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

  • 7

    您需要将相关项目添加到Deployment Assembly中 .

    右键单击项目 - >属性 - >部署程序集 - >添加

  • 0

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

  • 5

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

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

  • 36

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

    然后检查这些相关项目是否与Facets兼容 . (项目 - >项目方面)

  • 0

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

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

相关问题