用于多个 Maven 模块项目的 proguard

2024-03-22

我在多模块 Maven 项目中有一个对 proguard 的插件引用。

我的项目的功能已经过全面测试并且可以工作......直到我添加 proguard。

我的项目的结构

parent-pom  
  -module-a-pom  
  -module-b-pom

tester-pom
  1. 模块 b 依赖于模块 a。
  2. module-a 和 module-b 都安装到我的本地 Maven 存储库中。
  3. tester 依赖于 module-a 和 module-b。
  4. 我的 proguard.conf 文件位于文件系统上的parent-pom pom.xml 文件旁边。
  5. 我在 module-a 和 module-b pom.xml 文件中配置了 proguard。

我的混淆器配置如下所示:

<plugin>
    <groupId>com.github.wvengen</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <version>2.0.8</version>
    <executions>
        <execution>
            <id>process-classes-with-proguard</id>
            <phase>process-classes</phase>
            <goals>
                <goal>proguard</goal>
            </goals>
            <configuration>
                <injar>classes</injar>
                <proguardVersion>5.1</proguardVersion>
                <proguardInclude>${project.basedir}/../proguard.conf</proguardInclude>
                <libs>
                    <lib>${java.bootstrap.classes}</lib>
                    <lib>${java.secure.socket.extension.classes}</lib>
                    <lib>${java.cryptographic.extension.classes}</lib>
                </libs>
                <obfuscate>true</obfuscate>
            </configuration>
          </execution>
       </executions>
       <dependencies>
          <dependency>
              <groupId>net.sf.proguard</groupId>
              <artifactId>proguard-base</artifactId>
              <version>5.1</version>
              <scope>runtime</scope>
          </dependency>
       </dependencies>
</plugin>

我的项目使用 GSON 反序列化来自我无法控制的外部组件的一些传入 JSON,这增加了我的复杂性。

在构建过程中执行 proguard 会导致 GSON 代码抛出 NullPointerExceptions

受 proguard 影响的代码是:

Gson gson = new Gson();
Type collectionType = new TypeToken<ArrayList<MyType>>(){}.getType();
ArrayList<MyType> myTypes = gson.fromJson(json, collectionType);

如果 proguard 在我的 pom 文件中被注释掉(所以它不会执行),那么这段代码(以及我项目的其余部分)就像一个魅力。

如何配置混淆器来混淆我的代码但不破坏功能?对于多模块项目来说这可能吗?

Does anyone知道如何为多模块 Maven 项目配置 proguard 吗?

注意:我已经尝试过了this https://stackoverflow.com/questions/16563916/proguard-issue-while-using-gson这似乎对结果没有影响。


我最终通过以下方式完成了这项工作:

  1. 使用Windows Proguard应用程序并通过向导选择相对基本的设置
  2. 导出配置
  3. 闭上眼睛,按下“开始”按钮。

..它成功了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于多个 Maven 模块项目的 proguard 的相关文章

随机推荐

  • Bootstrap 5 有内置水平线吗?

    我正在寻找样式或彩色水平线 最好有成功 主要 警告类别 类似的概念彩色链接 https getbootstrap com docs 5 0 helpers colored links 我在 Bootstrap 的网站上找不到这个主题 我找到
  • 如何使用 jest/enzyme 中的“current”属性测试 useRef

    我希望有人能指出我正确的测试方向useRef在下面的组件中 我有一个类似于下面的组件结构 我正在尝试测试其中的功能otherFunction 但我不确定如何模拟组件引用中的当前属性 以前有人做过这样的事情吗 const Component
  • 应用内购买从服务器检索信息时出错 [DF-AA-20]

    我正在尝试启用应用程序计费 我已经在我的 Google Play 控制台上创建了应用内产品并获得了我的许可证密钥 当我尝试购买产品时 我收到此图像错误 这是我用来创建 BillingProcessor 的代码 bp new BillingP
  • “或”和||之间的区别在鲁比? [复制]

    这个问题在这里已经有答案了 两者有什么区别or and Ruby 中的运算符 或者这只是偏好 这是一个运算符优先级的问题 优先级高于or 因此 在两者之间还有其他运算符 包括三元 和赋值 因此您选择哪一个会影响语句的结果 这是一个ruby
  • python 中复杂的类似 matlab 的数据结构 (numpy/scipy)

    我目前在 Matlab 中的数据结构如下 item i attribute1 2 j 其中 item 是 i 1 n 中的一个单元格 每个单元格包含多个属性的数据结构 每个属性的大小为 2 j 的矩阵 其中 j 1 m 属性的数量不固定 我
  • Karma - 包含 html 文件时出现意外标记

    我试图在我的 karma 配置文件中包含一个简单的 html 文件 以访问我的 javascript 文件中的 html 元素 并使用 karma 中的 jasmine 进行测试 但我总是得到一个意外令牌 错误 我在网络广播中看到可以包含
  • JEST + React 测试库:我应该在测试之前使用 beforeAll 渲染我的组件吗?

    正如标题所示 我正在使用 RTL Jest 使用 Create react app 设置 我的问题是 我是否应该在每个测试中使用 beforeAll 来预渲染该块中的组件 这样每个测试就不必从头开始重新渲染组件 因为我的测试套件始终从相同的
  • 给定一组 GraphQL 变量类型,是否可以使用客户端模式为该组中的每种类型创建所有有效值的映射

    标题主要说明了一切 我正在构建一个反应 中继应用程序 它将允许用户在运行时动态创建图表 显示指定时间范围内的各种收入流 该图表的一个特点是用户能够指定每个收入流的采样间隔 例如 YEAR QUARTER MONTH WEEK等 作为每个流的
  • 无法启动动物园管理员

    我正在使用合流平台 zookeeper 处于活动状态查找状态 但是当我尝试用 confluence 启动 kafka 时 它显示 Zookeeper 已关闭 sudo service zookeeper status Redirecting
  • Phonegap、Cordova 观察位置每 1 秒成功发射一次

    平台 iOS6 OSx Lion 我试图弄清楚 Phonegap Cordova 的工作方式navigator geolocation watchPosition 文档说该选项 maximumAge 是要求系统检索位置的一个 因此 有了这些
  • 将 DataTable 转换为 IEnumerable

    我正在尝试将 DataTable 转换为 IEnumerable 其中 T 是我创建的自定义类型 我知道我可以通过创建一个List
  • ERR_TOO_MANY_REDIRECTS:我的代码是否被锁定在循环中?

    我正在尝试完成 Tableau js API 教程 当我尝试将在线示例与我发布到服务器的图表一起使用时 我立即遇到了 ERR TOO MANY REDIRECTS 错误 我对这项工作还很陌生 所以我想我应该提供相关的片段 看看您是否可以发现
  • 如何恢复电子应用程序中的默认窗口大小?

    有没有办法将电子应用程序中的主窗口恢复到一定大小 为了解释我想要实现的目标 让我举个例子 当我打开 Windows 资源管理器时 它会以特定大小并在特定位置打开 然后我最大化该窗口并关闭资源管理器 下次当我重新启动资源管理器时 它会以与关闭
  • 查找数组中的总和等于零

    给定一个整数数组 找到一组至少有一个总和为 0 的整数 例如 给定 1 8 6 7 2 1 2 5 算法可以输出 1 6 2 2 5 因为这是输入数组的子集 其总和为 0 该解决方案必须在多项式时间内运行 您将很难在多项式时间内完成此任务
  • ActiveX 控件是否被禁用?

    我的 Excel 工作表使用 ActiveX 复选框来控制某些活动 今天他们开始报错 一位运行更高版本 Excel 的同事向我发出了警报 但它仍然可以在我的计算机上运行 我注意到有 Windows 更新 所以我进行了更新 现在它不再在我的计
  • std::vector 到带有自定义分隔符的字符串

    我想复制a的内容vector到一长string带有自定义分隔符 到目前为止 我已经尝试过 h string getLabeledPointsString const string delimiter cpp string Gesture g
  • 数据表到嵌套列表

    我想转换 library data table n lt 12 DT lt data table level1 rep paste0 Manu 1 2 each n 2 level2 rep paste0 Dept 1 4 each n 4
  • 验证 Tensorflow 流中是否存在该文件。使用 tf.gfile.Exists 以字符串张量作为输入

    使用 Tensorflow 我试图在读取文件之前验证文件是否存在tf read file filename 不幸的是 按照我的管道的设置方式 我正在使用以下命令动态生成文件名字符串tf命令 我使用生成文件名字符串tf string join
  • 跟踪 XWindow 协议

    是否可以使用工具跟踪 XWindow 协议 我认为wireshark将是一个很好的框架来承载这样的想法 但似乎没有支持 为了实现这个目标应该做什么 Wiresharkdoes具有剖析X Window协议的能力 但是 您首先必须能够捕获 X
  • 用于多个 Maven 模块项目的 proguard

    我在多模块 Maven 项目中有一个对 proguard 的插件引用 我的项目的功能已经过全面测试并且可以工作 直到我添加 proguard 我的项目的结构 parent pom module a pom module b pom test