混淆代码
第一步:我们准备pom文件的jar和plugin插件,pom文件需要下面这些配置
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.3.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<!--使用插件的什么功能,当然是混淆-->
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardVersion>6.2.2</proguardVersion>
<injar>classes</injar>
<outjar>test.jar</outjar>
<obfuscate>true</obfuscate>
<proguardInclude>proguard.conf</proguardInclude>
<libs>
<lib>C:/Program Files/Java/jre1.8.0_111/lib/rt.jar</lib>
<lib>C:/Program Files/Java/jre1.8.0_111/lib/jce.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.2.2</version>
</dependency>
</dependencies>
</plugin>
第二步:我们准备一个排除不混淆的配置文件,这个配置文件主要就是排除不能被混淆的代码,比如像实体类呀,VO类,启动类,日志,mapper,这些都不能混淆掉,否则程序找不到,就会影响报错的以下的配置只能作为参考,看你的路劲写上去哦,
-target 1.8 ##指定java版本号
-dontshrink ##默认是开启的,这里关闭shrink,即不删除没有使用的类/成员
-dontoptimize ##默认是开启的,这里关闭字节码级别的优化
-useuniqueclassmembernames ##对于类成员的命名的混淆采取唯一策略
-adaptclassstrings ## 混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代
-dontusemixedcaseclassnames ## 混淆时不生成大小写混合的类名,默认是可以大小写混合
-dontpreverify
-ignorewarnings
-dontskipnonpubliclibraryclasses ## 不加这个会报错Error: Can't find common super class of [java/lang/StringBuffer] and [org/eclipse/swt/internal/win32/TCHAR]
-keep class com.ledian.web.module.attendance.response.**,com.ledian.das.door.common.**,com.base.util,com.base.entity.**,com.ledian.web.module.attendance.request.**,com.**.entity.**{*;}
-keep class com.**.mapper.**{*;}
-keep class com.ledian.web.module.**,com.ledian.tm.resource.owner.OwnerHouse{ *;}
-keep class com.ledian.web.utils.**,com.ledian.web.module.statistics.vo.**,com.ledian.web.module.attendance.vo.**{*;}
-keep class com.ledian.web.MyBatisConfig,com.ledian.web.JacksonConfig{*;}
keep配置
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
#controller包名不混淆,否则aop无法切入
-keeppackagenames com.**.resource.**
-keep class com.ledian.web.Application{ *;}
-keep class com.ledian.web.Application$* { *;}
-keepclasseswithmembers public class * {protected Logger logger;}
第三步:我们就可以使用package打包啦!打包的名称我现在配置的是test.jar这个是可以修改的哦
执行步骤
上面的test.jar打包完成了,我们就要进行打成exe的包了
第一步:我们把所有用的资料放入一个文件夹里面
① Jdk1.8.1_40:他是一个jdk在里面,客户使用exe安装的时候会自动配置到客户电 脑里面
② Mysql:数据库的基础配置在里面
③ Output:打包完成的exe是放在这个文件夹下面的
④ Tomcat-smart-pm:tomcat的基础
⑤ Setport.bat:是设置端口号
⑥ Smart_pm2.iss:是一个打包工具
⑦ Start.bat:是启动服务
⑧ Stop.bat:是停止服务
第二步:我们把打包的test.jar进行解压可以看到以下文件把这些复制起来哦
第三步:我们把刚刚复制的文件放入我们打包的tomcat里面的classes文件进行覆盖
第四步:我们后端代码完成了接下来我们要覆盖前端代码了
第五步:如果需要更改数据库的话那么就把data文件复制到打包的mysql中进行覆盖
第六步:如果需要更改我们安装完成之后会弹出一个cmd显示ip地址的话可以在start.bat
第七步:如果想修改停止服务的配置可以修改stop.bat,这个配置主要是杀死mysql的进程和tomcat 的进程,
第八步:双击进入smart_pm2.iss会有一些配置,这些配置都需要对应哦,不然会报错哦!
第九步:我们就开始打exe包啦,等进度条完成,Output文件夹就会有一个exe文件了
注释:以上是我有mysql,有tomcat,有项目的前提哦,