其中一个应用程序中有一个业务模块 - 例如kilo-business
。现在,该模块中有一些 API 将由另一个应用程序(组织内的本地应用程序 - 比如说 kilo-client1
)使用。我使用 Proguard(通过其 Maven 插件)仅提取与 API 相关的类,并从中制作一个 JAR - 名为 kilo-business-apis
的缩小的 API JAR。 kilo-client1
使用此 kilo-business-apis
依赖项并调用服务。作为一项政策,我们始终包含源以及我们在应用程序之间共享的任何 Artifact (以便于调试和附加文档)。
在这种情况下,有没有一种方法可以让 Proguard 也给出(可能的)源文件(属于 kilo-business
模块),它从那里获取了 kilo-business-apis
使用哪个源 JAR 可以被调用?实际上,我们不会将 JAR 缩小到从类中删除未使用的方法/变量的程度,因此给出源 java 文件也足够了。
我知道即使我们不发布它,也可以在 eclipse 中使用 jd-eclipse 或其他一些反编译器来帮助调试,但想检查我们是否可以生成源头类,从而也解决了文档需求。
一种想法是将 kilo-business
本身分解为 kilo-business-apis
的单独模块,其中仅包含 API 定义,并且 kilo- Business
和 kilo-client1
可以使用它,但不幸的是,由于遗留原因我无法这样做。
提前致谢!
最佳答案
ProGuard 可以选择写出有关保留的入口点 (-printseeds)、未使用的代码 (-printusage) 和混淆映射 (-printmapping) 的信息,但与源文件无关。如果你不混淆代码,你可以简单地在处理后的输出中列出.class名称,并找到相应的.java文件。
关于java - 通过 proguard 为模块中缩小的类创建源 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541444/