Proguard 混淆在使用 Maven 的 Jenkins 构建中失败 - 无法读取 classes.jar

Posted

技术标签:

【中文标题】Proguard 混淆在使用 Maven 的 Jenkins 构建中失败 - 无法读取 classes.jar【英文标题】:Proguard Obfuscation failed in Jenkins build using Maven - can't read classes.jar 【发布时间】:2012-08-18 00:02:02 【问题描述】:

我正在使用 Jenkins 在 Linux 机器上构建一个 Maven 项目并收到以下错误:

[proguard] 错误:无法读取 [/usr/lib/jvm/java-6-openjdk-amd64/Classes/classes.jar](没有这样的文件或目录)

我已经安装了 JDK 并将 JAVA_HOME 变量设置为:/usr/lib/jvm/java-6-openjdk-amd64

但是,如果我查看 Jenkins 的“系统信息”部分,我会得到两个 java home 位置:

java.home: /usr/lib/jvm/java-6-openjdk-amd64/jre

JAVA_HOME: /usr/lib/jvm/java-6-openjdk-amd64

当我在 MacOS 上运行项目时,proguard 插件可以完美运行,所以我知道它与我的项目设置无关。我在 Jenkins 中缺少什么或如何在我的服务器上安装 Java?

【问题讨论】:

在您的 java 安装位置下找到 classes.jar 并相应地指定您的 JAVA_HOME。 我在任何地方都找不到 classes.jar?如果我运行:'sudo apt-get install sun-java6-jdk' 我得到零更新 【参考方案1】:

您正在使用 proguard 插件? 您是否在 pom.xml 中包含以下内容?

<libs>
    <lib>$java.home/Classes/classes.jar</lib>
</libs>

我猜,你的开发环境是一个 mac 盒子,而你的 jenkins 是在一个 linux 盒子里运行的。 所以这就是问题所在。 以下设置可以在 linux 中运行。而且如果你在mac上安装Oracle Jdk 1.7或者1.8也可以。

<libs>
     <lib>$java.home/lib/rt.jar</lib>
</libs>

我的意思是问题的关键是libs设置来自mac与apple java6一起使用,而jenkins在linux上。

【讨论】:

以上是关于Proguard 混淆在使用 Maven 的 Jenkins 构建中失败 - 无法读取 classes.jar的主要内容,如果未能解决你的问题,请参考以下文章

Maven WEB 项目使用ProGuard进行混淆,最佳解决方案

原创解决Maven ProGuard不混淆局部变量的问题,以及如何使用混淆好的包

maven中添加proguard来混淆代码

maven中添加proguard来混淆代码

proguard 不混淆第三方jar包的问题

proguard生成的pro怎么载入