一次对多个项目进行 Java Proguard 混淆(或保存接口包括定义)?

bia*_*ias 6 java plugins proguard maven serviceloader

我正在通过 maven 混淆/优化一个应用程序和一组插件/库(使用 ServiceLoader)。

插件仅在与应用程序相同的代码库中创建/维护,它不是用于 3rd 方开发的接口,因此需要进行混淆。

我希望能够混淆插件接口类中包含的 App 代码。我能想到的唯一方法是同时在应用程序和插件上运行 proguard(或者以某种方式让 proguard 保存应用程序运行信息以供插件编译使用)。这可能吗?或者,我是否必须不混淆任何包含的代码?

我现在正在使用单独的 maven pom 文件来构建应用程序和插件。我可以将 proguard 阶段添加到包含应用程序和插件 poms 的顶级 pom 文件中吗?

这是界面的样子,我希望能够混淆 AppClass1 和 AppClass2,首先在应用程序上使用 proguard 我不能这样做。

package com.project.app;

public interface RunPlugin {

    public int plugin_function(AppClass1 a1, AppClass2 a2);

}
Run Code Online (Sandbox Code Playgroud)

另外,我想我在技术上需要使用 proguard 生成的 .jar 来编译插件,并且它必须知道实体映射。

我得到的错误是直接和预期的

Caused by: java.lang.AbstractMethodError: Receiver class com.project.dummy.RunCustomPlugin does not define or inherit an implementation of the resolved method 'abstract int plugin_function(com.project.app.o, com.project.app.b)' of interface com.project.app.RunPlugin.
        at com.project.app.o.<init>(Unknown Source)
        at com.project.app.m.a(Unknown Source)
        at com.project.app.m.call(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

抱歉,如果有关于这样做的 proguard 参考 - 除了说不要混淆所需的应用程序类之外,找不到任何其他内容。