Spring MVC 利用class-final 加密war包部署到tomcat笔记
由于公司要求项目部署需要加密,防止别人拷贝出去运行或者反编译,故找了一些依赖尝试,最终选择class-final,确实好用,不过也走了一些坑,记录一下,以防忘记;
1、工程修改
在pom.xml中加入class-final插件
<plugin>
<!-- https://gitee.com/roseboy/classfinal -->
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<password>000000</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
<!--加密的包名,多个可用","分割-->
<packages>com.pack</packages>
<!--配置文件jdbc.properties若加密无法读取,故不做加密-->
<!--<cfgfiles>jdbc.properties,saToken.properties,sm.properties</cfgfiles>-->
<excludes>org.spring</excludes>
<!--需要加密的lib下的jar或者war包,可为空-->
<!--<libjars></libjars>-->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
插件地址class-final;里面也有具体步骤,不过自己记录一下自己遇到的问题
2、tomcat处理
2.1 将classfinal-fatjar-1.2.1.jar放入tomcat/bin目录下;
版本自己决定用哪个版本,当然,最好跟工程引入的版本一致
2.2 修改tomcat/bin下的setclasspath.bat文件(此步骤可忽略)
此步骤目的是将启动窗口隐藏调
将set _RUNJAVA="%JRE_HOME%\bin\java.exe"
改成set _RUNJAVA="%JRE_HOME%\bin\javaw.exe"
;
2.3 修改tomcat/bin目录下的文件catalina.bat文件(若是linux,则修改catalina.sh)–此处有坑
在setlocal下加入配置
set JAVA_OPTS=-javaagent:classfinal-fatjar-1.2.1.jar="-pwdname START_KEY"
其中START_KEY 为环境变量名称,我这里是用的环境变量来配置启动密码
注意,此处不能项官网一样使用(注意两者引号区别):
set JAVA_OPTS="-javaagent:classfinal-fatjar.jar='-pwdname START_KEY'"
具体原因未知,个人猜测是命令不支持
4、增加系统环境
在系统变量名:START_KEY,变量值:000000,也就是第一步中pom.xml里面配置的password值