最近遇到了一个问题,maven编译后,在target目录下,只有配置文件,没有相应的class文件。
之前的同组周围的几个同事都没人发现这个问题,主要是因为项目组其他人使用的方式都是下载了tomcat,然后将项目的war包部署到本地的tomcat下调试,没有人像我这样使用maven的插件去启动项目。
使用maven的插件去启动项目,就需要mvn clean install后,在target下,生成对应的class文件。
首先,要确定自己的maven的pom文件下,是否指定了resource的目录,如果没有指定,或者指定的也是没问题的,那么大多数人都是因为使用的maven-compiler-plugin版本低了,仍旧使用的是2.x.x的版本,这个2.x.x的版本编译的过程中即使出现了问题,也不抛错出来,所以果断的换成了3.3的版本,果然编译之后报错了,一看报错的原因,是项目的某个子模块下不存在某个class文件,结果找了下代码,该项目的这个子模块下,有这个java文件的,然后就定位到该子模块下的pom文件也声明了maven-compiler-plugin,并且版本还是2.x.x的版本,检查了下所有子模块后,都统一成了3.3的版本,问题就解决了。
后来,看见某个论坛有人说,他的情况是换成了3.x的版本之后,会报内存溢出,原因是项目太大了,编译时,内存不够用,想了想这项目是有多大。。。
题外话,maven的项目,要注意一下几点
首先,一定要知道什么是maven的传递性依赖。
其次,要知道规范整个依赖的配置,在项目的根pom下,声明相应的management,统一好版本号,然后子模块只需要填写groupid和artifactid即可。
最后,build plugin相关的内容,可以在根pom下声明management,然后只在war的子模块使用相关的build plugin即可,没必要其他packaging为jar的子模块去配置相关的build plugin。
















