eclipse中tomcat发布maven多模块工程,找不到其他模块工程的类,class not found

eclipse下maven组件的安装以及用eclipse构建maven多模块工程(即有父子依赖关系的工程),此处略过。本文主要记录多模块工程的主工程发布到tomcat下时找不到依赖的其他模块的工程的类的解决方法。

用eclipse maven构建的多模块工程,代码调通没有报错,各个工程maven install也没有问题,eclipse自带的server中创建tomcat server后,将maven多模块工程的主工程发布到tomcat下,启动时总是报错找不到其他模块工程中的类。问过度娘后,整理解决方法如下:


方法1

除主工程(即要发布到tomcat下的工程,包含了web.xml等一系列配置的web工程)外的其他模块工程都工程右键->Run As->Maven install,将工程打成jar包install到本地仓库,然后关闭这些工程(close project),在主工程的pom.xml中添加子模块工程的依赖。之后,tomcat重新clean并启动项目,问题解决。

此方法中,主工程能够找到依赖的其他模块工程项目是因为pom.xml中添加了其他工程的依赖,而其他工程已经install到本地仓库并且关闭了。项目启动时,maven仓库下之前install的jar包会自动打到tomcat的主工程的lib目录下。


方法2

方法1中,虽然能找到类了,但在开发中,如果需要更改其他模块工程中的代码,则更改后还有重新maven install,关闭工程,发布到tomcat,重新启动,才能使更改生效。故而,更好的解决方案是,配置主工程的deployment assembly属性,使得其从workspace中打包代码而不从maven库中。首先,打开之前关闭的所有其他模块工程,然后依然要在主工程的pom.xml中配置对其他模块工程的依赖。接着,主工程右键->build path->deployment assembly,将依赖的其他模块工程添加进去,配置例如:

然后,tomcat重新clean,会发现原来的主工程下会有刚才加入的其他模块工程依赖,如下:


重新发布启动工程,主工程能够找到其他依赖工程的类,且其他模块工程修改后,不需要再maven install,可以直接生效。也可以用debug模式,问题解决。这种方法中,其实依赖的其他模块工程还是会被打成jar包放到tomcat下,不过不需要我们手动install,配置完成后,tomcat clean会自动打包。


另,方法2中,我曾遇到过配置了deployment assembly的其他模块工程依赖后,依然class not found的情况,这时候需要检查其他模块工程(非主工程)的deployment assembly配置,如下:


deploy path要更改为/,这样这个模块工程被打成jar包后,其中的class文件才会在jar包的根目录下,主工程才能找到。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Maven是一个非常常用的构建工具,在使用它构建多模块工程时,可以减少一些重复的工作,提高工程构建的效率。多模块工程即将一个大型工程分成多个模块,每个模块有自己的代码、配置文件和构建规则,模块可以独立构建,也可以重新组合成一个整体再进行构建。有了Maven这个工具,我们可以更加轻松地进行工程构建及部署。下面是Maven模块工程打包部署的一些要点: 1. 父工程:每个模块将会有一个父工程。父工程管理和统一构建所有模块,同时父工程也包含了一些工具依赖,如插件和配置等。 2. 模块:每个模块可以单独构建成一个独立的jar、war或者其他型的文件,但是它们都是在父工程定义的。每个模块应该有独立的代码库,独立的测试用例和独立的依赖库。 3. 依赖管理:每个模块都有自己的依赖库,同时父工程也可以统一管理所有模块的依赖。 4. 打包部署:对于一个多模块工程,最终会有一个多个模块组成的大型部署包。我们需要定义如何将每个模块的打包文件合并到最终的大包。 总的来说,Maven提供了丰富的构建工具和支持,使得多模块工程打包部署变得更加简单和高效。在实际应用,我们可以利用Maven的依赖管理,提高组件的复用率,也可以利用多模块工程的优势,让我们的代码更加清晰易懂,更容易维护和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值