java - 通过 proguard 为模块中缩小的类创建源 jar

标签 java maven proguard

其中一个应用程序中有一个业务模块 - 例如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- Businesskilo-client1 可以使用它,但不幸的是,由于遗留原因我无法这样做。

提前致谢!

最佳答案

ProGuard 可以选择写出有关保留的入口点 (-printseeds)、未使用的代码 (-printusage) 和混淆映射 (-printmapping) 的信息,但与源文件无关。如果你不混淆代码,你可以简单地在处理后的输出中列出.class名称,并找到相应的.java文件。

关于java - 通过 proguard 为模块中缩小的类创建源 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541444/

相关文章:

android - 如何找到哪个库正在使用缺少的类并导致 Proguard 错误?

java - 我怎样才能重置 JTextField ......?

java - Maven 需要手动更新依赖吗?

maven - 无法在任何地方找到 neo4j-cypher-dsl 版本 1.9.M04

java - 使用 Proguard 隐藏包名称,但将类中的某些方法公开

android - 生成签名的APK错误

java - Websocket 服务器 Android

java - 如何在不重新加载页面的情况下从 Javafx 编辑 HTML 页面(在 webview 中)?

java - 在 URL 问题中将参数从 JSP 传递到 Controller

java - Netbeans 项目不与 Maven 一起运行