2016-09-20 133 views
0

我有一个多模块maven项目。它设置正确,因为当我运行maven clean install时,它成功构建了所有的模块。 Webapp包含我在Web服务中需要的常用功能,因此我将它作为Maven依赖关系包含在Web服务中。多模块maven项目未部署可执行文件的依赖模块Jar

的Maven反应堆摘要:

[INFO] Reactor Summary: 
[INFO] 
[INFO] Parent .................................. SUCCESS [ 0.420 s] 
[INFO] Webapp .................................. SUCCESS [ 6.221 s] 
[INFO] Webservice .............................. SUCCESS [ 5.954 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12.763 s 
[INFO] Finished at: 2016-09-20T16:27:50-04:00 
[INFO] Final Memory: 18M/238M 
[INFO] ------------------------------------------------------------------------ 

Eclipse将连webapp项目为Web serivce展开组件。

Deployment Assembly Configuration

这里是我的web服务中我的行家依赖的Web应用程序模块:

<dependency> 
    <groupId>com.company</groupId> 
    <artifactId>webapp</artifactId> 
    <version>16.3</version> 
    <scope>compile</scope> 
</dependency> 

然而,当我尝试运行此,我收到以下内容:

Caused by: java.lang.ClassNotFoundException: com.company.model.User 

要解决这个问题,我必须从部署程序集中删除模块,并实际添加在/ target文件夹中创建的jar。看起来好像我不这样做,它不会在服务器上的lib文件夹中创建可执行jar文件,而只是创建webapp项目的文件夹结构。有没有我可以用来解决这个问题的设置,所以它在服务器上正确部署?任何建议都非常感谢,因为这是我第一个多模块maven项目,并且我一直在为此付出努力,并且这变得令人讨厌。谢谢!

+1

你在eclipse中使用插件运行Web服务吗?你有没有尝试在独立应用程序服务器上运行使用maven构建的Web服务战?我怀疑问题在于eclipse项目元数据。 – Sammyrulez

+0

我正在使用m2e插件进行日食。是的,当我部署从目标文件夹生成的战争,它正常工作,所以我也认为这是eclipse如何部署到服务器的东西。只是无法弄清楚。请注意,当我查看eclipse中部署的战争中的jar时,它就是一个目录。 – ephemeralCoder

+1

恐怕我有几次同样的错误,从来没有找到解决方案。尝试手动删除eclipse支持文件并重新导入项目。 – Sammyrulez

回答

1

它看起来像eclipse只会寻找工作区内的项目作为maven依赖项,但它会将项目添加到从属项目,当您要使用其他模块的类时会导致问题。我发现这是一个被检查的设置。一旦我未选中它,它正确地添加的jar到服务器,我能够访问类没有得到ClassNotFound的异常

Web项目右键 - >属性 - > Maven的

enter image description here