【背景】
公司最近要和某大公司合作,将本公司的产品提供给其它公司单独部署售卖,为了让产品中重要的服务具备防君子不防小人的作用,于是就写了一个单独的服务,通过aop拦截所有请求验证颁发的证书从而达到效果。
这个单独验证的服务需要以jar的形式嵌入到服务中,其中为了避免jar包的版本冲突问题,所以需要将校验服务打包为只包含本项目中对应class文件的jar(不包含任何maven依赖的jar)。
注:这样所有第三方jar以及对应的版本全都交由最终引入验证服务jar的服务去管理(ps:编写SDK的时候一般也通过这样的方式)
【环境】
idea版本:2017.1
jdk版本:1.8
windows版本:win8
注:小编这个验证服务为maven项目
【过程】
第一步:先通过idea中的install将项目中的java文件编译为class文件
第二步:File——>Project Structure——>Project Settings——>Artifacts——>单击绿色加号——>JAR——>Empty
第三步:创建包文件夹,要和项目中的包结构一致(因为每个class的最上面package已经在项目中有明确指向了)
第四步:加入自己指定要打的class文件(该文件在第一步编辑完成之后的class文件中寻找),不同的包中的class需要先建立包结构再分别选择
第五步:执行编译打包出对应的jar
【总结】
小编首先收获的是慢慢的喜悦与成就感,下面就列举一下自己的成长总结:
1.对IDEA将项目打包为指定class文件的jar有了深刻的理解(和自己之前写的IDEA中添加普通web项目形成对比)
2.针对于在遇到问题提取百度搜索关键词有了深入思考
3.遇到问题到最终相信自己能够解决问题有了更加坚定的信念
【扩展】
如果要写一个jar工具,并且将依赖的包都集成进去的话请参考:解决问题--maven项目和需要依赖打成一个jar包(亲测好用)
如果需要控制引入的jar的周期可以修改pom文件对应jar的scope标签,详情参考:maven中scope属性的
注:这两个扩展内容小编没有自测,只是在查询前期针对于概念不太明确,所以这里就做为参考内容先放到这里,以后需要的话会详细研究测试再出相关博文。