java - Maven、Proguard 和我不想要的 jar

标签 java deployment maven proguard

我正在使用 proguard-maven-plugin 混淆一个项目。一切正常,除了一件事:我不想要原始 jar,既不在目标目录中也不在存储库中部署。此刻,我得到了原始 jar 和混淆 jar 。以这种方式保留它会导致我们的构建服务器出现问题,因为这两个 Artifact 都会被部署,从而导致类路径中出现重复的接口(interface)。在构建服务器上使用黑名单不是一种选择。

有什么想法吗?

谢谢!

最佳答案

如果有人遇到此问题,以下配置对我有用。这会将原始 jar 重命名为 {final name}_proguard_base.jar 并用处理过的 jar 覆盖项目 jar。

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

关于java - Maven、Proguard 和我不想要的 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699936/

相关文章:

java - 假 X11 显示器?

如果选择,Java 添加到 int

java - 何时通知 ReferenceHandler 线程?

jakarta-ee - Java EE 插件框架

javascript - 使用 Shipit JS 在 CWD 中部署文件夹

eclipse - 在eclipse中新建maven项目时在构建路径中发现多个scala库

java - 如何在帮助 :effective-pom? 中指定 Artifact

android - com.mcxiaoke.volley:library-aar和com.mcxiaoke.volley:library有什么区别?

java - Tomcat 安装目录无效。它缺少预期的文件或文件夹 tcruntime-ctl.sh

Heroku:虽然在 requirements.txt 中没有名为 flask 的模块