首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven Proguard和一个我不想要的罐子

Maven Proguard和一个我不想要的罐子
EN

Stack Overflow用户
提问于 2012-01-02 18:48:20
回答 4查看 3K关注 0票数 4

我正在用proguard-maven-plugin来遮蔽一个项目。一切正常,除了一件事:我不想要原始的jar,既不在目标目录中,也不在存储库中部署。目前,我得到了原始的jar和模糊的jar。这样做会在我们的buildserver中引发问题,因为这两个构件都会被部署,从而导致类路径中出现重复的接口。在buildserver上使用黑名单不是一个选项。

有什么想法吗?

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2012-06-21 13:10:46

您只需指定指向同一jar的jar和outjar参数,proguard将覆盖原始的jar。

我的proguard设置(对于java 6,对于java 7,请相应地更改groupid、artifactid和version ):

代码语言:javascript
复制
<plugin>
    <groupId>com.pyx4me</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <version>2.0.4</version>
    <executions>
        <execution>
            <phase>process-classes</phase>
            <goals>
                <goal>proguard</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <obfuscate>true</obfuscate>
        <includeDependency>false</includeDependency>
        <injar>classes</injar>
        <maxMemory>512m</maxMemory>
        <libs>
            <!-- dependency jar here -->
        </libs>
        <options>
            <option>-keepattributes *Annotation*</option>
            <option>-allowaccessmodification</option>
            <option>-dontskipnonpubliclibraryclasses</option>
            <option>-dontskipnonpubliclibraryclassmembers</option>
            <option>-dontusemixedcaseclassnames</option>
            <option>-dontshrink </option>
        </options>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>net.sf.proguard</groupId>
            <artifactId>proguard</artifactId>
            <version>4.4</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</plugin>

HTH。

票数 1
EN

Stack Overflow用户

发布于 2013-10-25 06:28:09

如果有人有这个问题,下面的配置对我有效。这会将原始jar重命名为{final name}_proguard_base.jar,并使用已处理的jar覆盖项目jar。

代码语言:javascript
复制
        <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.0.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <proguardVersion>${proguard.version}</proguardVersion>
                    <obfuscate>false</obfuscate>
                    <injarNotExistsSkip>true</injarNotExistsSkip>
                    <injar>${project.build.finalName}.jar</injar>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                    <addMavenDescriptor>true</addMavenDescriptor>
                    <attach>false</attach>
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                        <lib>${java.home}/lib/jsse.jar</lib>
                        <lib>${java.home}/lib/jce.jar</lib>
                    </libs>
                    <proguardInclude>${project.basedir}/proguard.conf</proguardInclude>
                    <options>
                        <option>-printseeds ${project.build.directory}/proguard-seeds.txt</option>
                        <option>-printusage ${project.build.directory}/proguard-shrinkusage.txt</option>
                        <option>-printmapping ${project.build.directory}/proguard-mapping.txt</option>
                        <option>-printconfiguration ${project.build.directory}/proguard-config.txt</option>
                        <option>-dontobfuscate</option>
                        <option>-keepdirectories</option>
                        <option>-dontskipnonpubliclibraryclasses</option>
                        <option>-dontskipnonpubliclibraryclassmembers</option>
                    </options>                  
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>${proguard.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
票数 1
EN

Stack Overflow用户

发布于 2012-01-06 04:41:30

根据Maven中Proguard插件的文档,如果您不指定outjar参数,它将覆盖输入jar。

http://pyx4me.com/pyx4me-maven-plugins/proguard-maven-plugin/proguard-mojo.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8699936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档