问题
今天新开的项目第一版代码完成了,主要就是对接第三方接口,写定时任务跑数据,由于之前都在本地跑,所以打包的问题一直没有出现。打包后主要问题有两个:
引入的第三方jar包,无法打包到项目jar包中
第三方接口的鉴权文件代码中使用getResource获取不到
第三方jar包
由于使用gradle打包,所以它并不会主动将第三方jar包打进去,我目前的文件结构:
第三方jar包位于lib目录下,解决方案:
compile fileTree(dir: 'lib', include: ['*.jar'])
在build.gradle 的dependencies下加上这段就可以了。
静态文件处理
由于调用第三方接口,很多接口都需要进行鉴权,鉴权的方式普遍有两种:
通过账号密码获取token,然后将token放到请求头中
通过第三方给的license文件,通过调用他们封装的http客户端进行解码,获取权限。
由于在编码过程中,遇到了第二种情况,打包后的jar中确实存在license文件,但是通过getResource去获取的时候为空,我就感觉可能打包后,文件的相对位置改变了。
我想到一个办法,将license文件放到服务器的某个地方,比如/opt/data_monitor/auth.lic
中,这样通过这个地址去获取文件,就不用考虑文件在jar包里的相对位置了。
后语
接触gradle一年多了,以前打包都是借助Jenkins+Git,从来没考虑过自己去打包的问题,这次暴露出来的问题很多,但是我更强了不是吗?