1

环境{git, maven, spring3, tomcat7, STS3.2/Eclipse4.2}

Maven项目具有以下结构

Base
--CoreApi
--CoreImpl
--ModuleBase
----ModuleApi
----ModuleImpl
----ModuleWeb

ModuleWeb 对 CoreApi (jar)、ModuleApi (jar) 和 ModuleImpl (jar) 有编译时依赖。

当我将 ModuleWeb 发布到 tomcat(使用 STS)并启动 tomcat 时,我看到ModuleImpl 没有复制到 WEB-INF/lib文件夹,最终导致 ClassNotFound 类异常。然而 ModuleApi 和 CoreApi 被复制到库中。这就是问题所在!

值得一提的是,我当然可以maven clean install从终端毫无问题地进行操作,并且它成功地生成了 jars 和 war。

在 STS > ModuleWeb 的项目属性 > 部署程序集在此处输入图像描述

构建路径顺序和导出如下所示: 在此处输入图像描述

当然,如果我手动将 ModuleImpl 复制到 WEB-INF/lib,一切正常,但是,这不是应该的。那么,有什么线索吗?

git rm -r --cached话虽如此,在我不得不在 .gitignore 中进行一些与 git 相关的更改以添加 .settings 和 .classpath并进一步执行git add .一系列项目清理、提交和从终端安装 maven之前,一切正常。我觉得有些事情搞砸了。

4

1 回答 1

0

m2e-wtp这是Eclipse 中插件的一个持续问题:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=398138

我还没有弄清楚它何时出现的具体条件,也没有具体的解决方法。如果可以的话,我建议更改依赖结构。例如,使ModuleApi依赖于ModuleImpl(即使它们不是),或CoreApi依赖于ModuleImpl.

于 2013-06-07T12:53:48.697 回答