			<plugin>
				<groupId>com.github.wvengen</groupId>
				<artifactId>proguard-maven-plugin</artifactId>
				<version>2.0.14</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>proguard</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<proguardVersion>6.2.2</proguardVersion>
					<injar>${project.build.finalName}.jar</injar>
					<outjar>${project.build.finalName}.jar</outjar>
					<obfuscate>true</obfuscate>
					<libraryjars>lib</libraryjars>
					<options>
						<!-- JDK目标版本1.8 -->
						<option>-target 1.8</option>
						<!-- 不做收缩（删除注释、未被引用代码） -->
						<option>-dontshrink</option>
						<!-- 不做优化（变更代码实现逻辑） -->
						<option>-dontoptimize</option>
						<!-- 不混淆所有包名，本人测试混淆后WEB项目问题实在太多，毕竟Spring配置中有 大量固定写法的包名 -->
						<option>-keeppackagenames</option>
						<option>-adaptclassstrings</option>
						<!-- 不混淆所有特殊的类 -->
						<option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,
							*Annotation*,Synthetic,EnclosingMethod</option>
						<!-- This option will save all original methods parameters in files 
							defined in -keep sections, otherwise all parameter names will be obfuscate. -->
						<option>-keepparameternames</option>
						<!--混淆这个包下的类 -->
						<!--<option>-keep class !com.example.demo.** { *; }</option>-->
						<!-- 不混淆main方法 -->
						<option>-keep class htsoft.platform.** { *; }</option>
						<option>-keepnames interface ** { *; }</option>
						<!-- 不混淆所有的set/get方法 -->
						<option>-keepclassmembers public class * {void set*(***);***
							get*();}</option>
						<!--##保留枚举成员及方法 -->
						<option> -keepclassmembers enum * { *; }</option>
						<!-- 不对包类的类名进行混淆，但对类中的属性和方法混淆 -->
						<option>-keep class htsoft.platform.metadata.*.controller.** </option>
						<option>-keep class htsoft.platform.metadata.*.serviceimpl.** {*;}</option> 
						<!-- 不混淆包下的所有类名，且类中的方法也不混淆 -->
						<option>-keep class htsoft.platform.metadata.*.entity.** {*;}</option>
			
						<option>-keep class htsoft.platform.util.** {*;}</option>
						<option>-keep class htsoft.platform.config.** {*;}</option>
                        <!-- 此选项将在所有包的所有类中保存所有原始定义的注释.-->
                        <option>
                             -keep class * {
                            @org.springframework.beans.factory.annotation.Autowired *;
                            @org.springframework.beans.factory.annotation.Value *;
                            @org.springframework.stereotype.Service *;
                            @org.springframework.stereotype.Component *;
                            @org.springframework.scheduling.annotation.Scheduled *;
                            }
                        </option>
					</options>
			
					<libs>
						<!-- Include main JAVA library required. -->
						<lib>${java.home}/lib/rt.jar</lib>
						<lib>${java.home}/lib/jce.jar</lib>
					</libs>
				</configuration>
				<dependencies>
					<!-- https://mvnrepository.com/artifact/net.sf.proguard/proguard-base -->
					<dependency>
					    <groupId>net.sf.proguard</groupId>
					    <artifactId>proguard-base</artifactId>
					    <version>6.2.2</version>
						<scope>runtime</scope>
					</dependency>
				</dependencies>
			</plugin>
