1.maven打包:
一直以来我都没太注意过在myeclipse下使用run as来clean居然对项目的target目录没有进行操作,要让操作有效,需要进入到maven build...选项下,进行clean,然后再使用process resources来加入配置文件,再使用compile--》package来打包,同时,值得注意的是,maven在进行打包时默认只把java文件打包进war,如果在非资源路径下,有配置文件,如mybits的mapper.xml文件,需要在maven里边指定一下,否则打包会失败。
src/main/resources
**/*.properties
**/*.xml
**/*.tld
false
src/main/java
**/*.properties
**/*.xml
**/*.tld
false
tips:一般如果不特别指定,maven项目在打包后会改变项目名称,如你的项目原来叫test,打包后会变成test0.0.1-SNAPSHOT,看起来很不爽,为了解决这一问题,需要加入如下配置:
test
test
org.apache.maven.plugins
maven-war-plugin
2.1.1
WEB-INF/web.xml
2.progard混淆配置部分:
com.github.wvengen
proguard-maven-plugin
2.0.11
package
proguard
true
true
pg
-target 1.8
-dontshrink
-dontoptimize
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontusemixedcaseclassnames
-allowaccessmodification
-useuniqueclassmembernames
-keeppackagenames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-keepclassmembers public class * {void set*(***);*** get*();}
-keep class **.list.servlet.**{*;}
-keep class **.zxf.servlet.**{*;}
-keep class **.controller.**
-keep class **.dao.**{ ; }
-keep class **.domain.** {*;}
-keep class com.lum.interface_util.** {*;}
-keep class com.java.zxf.util.ShowString {*;}
classes-autotest.jar
${java.home}/lib/rt.jar
classes
${project.build.directory}
3.混淆说明:你在混淆前,需要仔细分析你的项目,看看那些是必须保持类名不变的,那些是类名可以变,方法名可以变的,那些是可以随意变的,只有在搞清楚这些之后,你的混淆工作才是有保障的,即即实现了混淆,也保证了代码的可执行性,混淆结果截图如下:
反编译后的效果:
5.总结:个人分析得出不能混淆的类主要有这些:①在web.xml里边配置的servlet,那么servlet的名称和方法名都不能进行混淆;②与数据库有交互的,主要包括实体类,dao层(这种是通过mapper.xml形式写的sql);③在jsp页面导入的类,如常量类,实体类等,需保证类名和变量名都不能混淆