It is possible to combine yGuard with maven but you have to make sure obfuscation is called in the correct step of the maven build process.
In order to run yGuard in a maven build process the following antrun plugin configuration in the maven pom.xml file of a jar artifact can be used:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>integration-test</phase>
<configuration>
<tasks>
<taskdef name="yguard"
classname="com.yworks.yguard.YGuardTask"
classpath="build-resources/obfuscator/yguard.jar"/>
<copy todir="target">
<fileset dir="target" />
<globmapper from="*.jar" to="backup/*_backup.jar" />
</copy>
<yguard>
<inoutpairs>
<fileset dir="target" includes="myApp*.jar"/>
</inoutpairs>
<property name="naming-scheme" value="best"/>
<rename logfile="renamelog.xml">
<adjust replaceContent="true">
<include
name="web.xml"/>
</adjust>
<keep>
<class methods="private" fields="private">
<patternset>
<include name="de/myProject/unchanged/**/*"/>
</patternset>
</class>
<class classes="none" methods="none" fields="none">
<patternset>
<include name="de/myProject/obfuscate/**/*"/>
</patternset>
</class>
</keep>
</rename>
</yguard>
<copy todir="target">
<fileset dir="target" />
<globmapper from="*_obf.jar" to="*.jar" />
</copy>
<delete>
<fileset dir="target">
<include name="*_obf.jar"/>
</fileset>
</delete>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Note the following aspects:
- the antrun plugin is executed in the "integration-test" phase. During this phase the original jar file that needs to be obfuscated is already built and we have a chance to obfuscate it before it is installed into the local maven repo.
- before obfuscation a backup of the original jar file is done
- after obfuscation (running the yguard-task) the obfuscated jar is renamed to its original name (with the help of copy and delete)
- Afterwards the obfuscated jar is installed into the local maven repository and can be referenced from other maven modules
Keine Kommentare:
Kommentar veröffentlichen