用yguard来混淆java web工程,只需要一个ant脚本,用maven也可以,不过没试过。
下面的例子会混淆自己开发的jar包,所有开发的class都打成jar包放到WEB-INF/lib/了,这是因为yguard只能混淆jar包,WEB-INF/classes/下放的是一些配置文件。混淆后配置文件中的类名也会一起改(可以配置不改),用的是ant1.9,maven3.0.5,注:所有文件均utf8编码,混淆后配置文件中的汉字有可能出现乱码。。最好不用中文,大致流程是jar1:用来把java代码和配置文件打包到一起,yguard:混淆jar1的包,unjar:解压混淆后的文件,jar2:重新打包,只打包java
class文件,war:最后组装到一起。
build.xml:
encoding="UTF-8"?>
basedir=".">
value="ERPRF-WEB2.0"/>
value="./WebContent"/>
value="./WebContent/WEB-INF"/>
value="./service_src"/>
value="./ui_src"/>
value="./config"/>
value="${WEB-INF}/config"/>
value="./build_classes"/>
value="./build_webxml"/>
value="./build_webinf_config"/>
value="./build_config"/>
value="./build_webinf_classes"/>
value="./build_unjar"/>
value="./dist"/>
value="${distDir}/${project_name}-1.jar"/>
value="${distDir}/${project_name}_obf.jar"/>
value="${distDir}/${project_name}-2.jar"/>
value="${distDir}/${project_name}.war"/>
value="${project_name}_renamelog.xml"/>
value="${project_name}_shrinklog.xml"/>
/>
includeEmptyDirs="true" />
includeEmptyDirs="true" />
includeEmptyDirs="true" />
includeEmptyDirs="true" />
includeEmptyDirs="true" />
/>
/>
>
/>
/>
/>
/>
/>
id="project.classpath">
dir="./WebContent/WEB-INF/lib">
destdir="${build_class_dir}" encoding="UTF-8" source="1.7"
target="1.7">
refid="project.classpath"/>
value="-XDignore.symbol.file"/>
/>
/>
depends="compile">
dir="${build_class_dir}">
dir="${src_config_dir}">
dir="${src_webinf_config_dir}">
id="yguard.jar" path="${basedir}/yguard.jar"/>
depends="jar1" >
classname="com.yworks.yguard.YGuardTask">
refid="yguard.jar"/>
out="${obfjar}"/>
name="**struts-*.xml"/>
name="demostruts-*.xml"/>
depends="unjar">
depends="jar2">
/>
webxml="${build_webxml_dir}/web.xml">
name="WEB-INF/lib/**"/>
name="WEB-INF/classes/**"/>
name="WEB-INF/config/**"/>
/>
/>