ProGuard能够作为maven的插件使用,让我们在原来的项目结构中,能够方便的实现代码混淆。但是网上ProGuard的资料通常都是单应用的实现,因此本文基于dubbo分布式项目,简单描述一下如何实现服务提供者的代码混淆。
服务提供者代码混淆
项目作为dubbo服务提供者,以jar的方式发布服务。
pom中添加ProGuard插件
1 | <!-- ProGuard混淆插件--> |
pom同级目录下添加proguard.conf混淆配置文件
1 | # ---------------------------------- |
打包,并替换class文件
经过以上配置后,执行maven打包命令mvn package
,在项目的target文件夹中会得到两个jar:项目名.jar、项目名-pg.jar。
然后我们要将这两个解压:1
2
3
4
5PROJ=项目名
PROJPG=${PROJ}"-pg"
unzip $PROJ.jar
unzip $PROJPG.jar
并将“项目名-pg”文件夹中的cn目录拷贝到原项目中,然后把它打成jar包:1
2
3rm -rf $PROJ/cn/
cp -avpf $PROJPG/cn/ $PROJ/
jar cvfm $PROJPG.jar $PROJ/META-INF/MANIFEST.MF -C $PROJ/ .
此时得到的“项目名.jar”就是混淆后的可执行jar包。执行它即可发布服务到dubbo注册中心。
以上操作可写成shell脚本,添加到自动部署流程中,实现自动化管理。
- 本文的配置请参照自身的项目做相应的调整