多模块maven项目没有为依赖模块

时间:2016-09-20 20:52:36

标签: java eclipse maven

我有一个多模块maven项目。它设置正确,因为当我运行maven clean install时,它成功构建了所有模块。 Web应用程序包含我需要在Web服务中使用的常用功能,因此我将其作为maven依赖项包含在Web服务中。

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服务的部署程序集。

Deployment Assembly Configuration

以下是我的webser服务中的maven依赖关系:

<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 个答案:

答案 0 :(得分:1)

看起来eclipse只会查找工作空间中的项目以包含为maven依赖项,但它会将项目添加到依赖项目中,当您想要使用其他模块中的类时会导致问题。我发现这是一个经过检查的设置。一旦我取消选中它,它就正确地将jar添加到服务器,并且我能够在不获取ClassNotFound异常的情况下访问类

右键点击网络项目 - &gt;属性 - &gt;行家

enter image description here