简体   繁体   English

Maven,Proguard和装配问题

[英]Maven, Proguard and assembly issues

I'm trying to get Maven working with ProGuard. 我正在努力让Maven与ProGuard合作。

What I want to achieve is the following: 我想要实现的目标如下:

  • Run ProGuard over my source files and produce obfuscated classes 在我的源文件上运行ProGuard并生成混淆的类

  • Create a manifest file that references the main class so that I can execute it as a jar 创建一个引用主类的清单文件,以便我可以将其作为jar执行

  • Unpack all of the associated library jars and create one huge jar containing them all. 解压缩所有相关的库jar并创建一个包含它们的巨大jar。 This file should only contact .class and .xml files only. 此文件只应与.class和.xml文件联系。

  • Assemble them into .zip and tar.gz files that include various README.txt files and so on. 将它们组装成包含各种README.txt文件的.zip和tar.gz文件,依此类推。

So far I've got something like this: 到目前为止,我有这样的事情:

        <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>

But I'm having no joy. 但我没有快乐。 Can anyone give me any vague pointers on this? 任何人都可以给我任何模糊的指示吗?

Thanks in advance, Matt 先谢谢,马特

Here is the configuration that had worked for me 这是适合我的配置

<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>

The final jar is the finalName-small.jar 最后一个jar是finalName-small.jar

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM