由于项目需要发送短信的功能,确定了需求后,开始开发,发现第三方提供的jar没有maven坐标。于是就开启了一系列的坑爹之路,最后还是解决了,纪录下。
先大致介绍下项目环境,以便能够更好的理解。
首先项目是分多模块的,3个jar包,1个war包。其中2个jar包是任务运行,批处理,监控等,发短信的功能就在其中一个jar中完成。还有个jar是core包,一些通用的公用的类,配置文件,services服务等。war包就是个服务接口,利用SpringMVC完成。
以下所有的修改都在一个任务jar中。
从第三方下载的jar复制到src/main/resources/lib目录下(新建lib目录),
引用方式:
这里的scope只能是system范围,systemPath属性指定jar的路径。
看下原本的打包方式:
assembly.xml就不贴出来了,主要工作就是打tar.gz包。
打出来的jar包中,并不包含system范围的jar包,就是第三方的包。并且在jar包的MF文件的classpath也未找到第三方的lib路径。
最后修改如下:
这样第三方的jar包就包含在classpath中,运行的java -jar xxx.jar的时候,也就不会报NoClassFound错误了。
完整的MF内容如下:
另外如果有需要可以定制MF文件,参考Apache Maven manifestEntries官网说明
和IBM Apache Maven您不知道的5件事
原创文章转载请注明出处: Maven引入本地jar包并生成jar包运行修改MANIFEST.MF文件