features dev java maven-2 plugins assemblies proguard

java - dev - Maven, Proguard y cuestiones de montaje.



java proguard (1)

Estoy tratando de hacer que Maven trabaje con ProGuard.

Lo que quiero lograr es lo siguiente:

  • Ejecutar ProGuard sobre mis archivos de origen y producir clases ofuscadas

  • Cree un archivo de manifiesto que haga referencia a la clase principal para que pueda ejecutarlo como un jar.

  • Desembale todos los archivos jar de la biblioteca asociada y cree un archivo jar enorme que contenga todos ellos. Este archivo solo debe contactar con los archivos .class y .xml solamente.

  • Ensámblelos en archivos .zip y tar.gz que incluyan varios archivos README.txt y así sucesivamente.

Hasta ahora tengo algo como esto:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <configuration> <archive> <manifest> <mainClass>com.class.path.MainClass</mainClass> </manifest> </archive> <includes> <include>**/*.class</include> <include>**/*.xml</include> </includes> </configuration> </plugin> <plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <configuration> <options> <option>-allowaccessmodification</option> </options> <obfuscate>true</obfuscate> <injar>classes</injar> <outjar>${project.build.finalName}.jar</outjar> <outputDirectory>${project.build.directory}</outputDirectory> <proguardInclude>src/main/assembly/proguard.conf</proguardInclude> <libs> lib/rt.jar</lib> </libs> </configuration> <executions> <execution> <phase>process-classes</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <id>assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> <configuration> <descriptors> <descriptor> src/main/assembly/bin.xml </descriptor> </descriptors> </configuration> </execution> </executions> </plugin>

Pero no estoy teniendo ninguna alegría. ¿Alguien puede darme algunos vagos consejos sobre esto?

Gracias de antemano, Matt


Aquí está la configuración que me había funcionado.

<plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <obfuscate>true</obfuscate> <options> <option>-allowaccessmodification</option> <option>-keep public class com.class.path.MainClass { public *; public static *; }</option> </options> <injar>${project.build.finalName}.jar</injar> <outjar>${project.build.finalName}-small.jar</outjar> <outputDirectory>${project.build.directory}</outputDirectory> <libs> <lib>${java.home}/lib/rt.jar</lib> <lib>${java.home}/lib/jsse.jar</lib> </libs> <addMavenDescriptor>false</addMavenDescriptor> </configuration> </plugin>

El tarro final es el finalName-small.jar