【发布时间】:2016-01-15 21:30:02
【问题描述】:
我有一个 java 库项目,其中包含对 guava 库的依赖项。 Guava 的方法数接近 11k,我预计大多数用户来自 Android 社区。 Android上有一个limit count方法,就是65k...
但是我的库的总计数方法大约是 11.400,所以我的库的代码不到 200 行。
我能够使用 proguard 下载并缩小一个番石榴罐,将计数方法数量减少到 1k。但是现在项目需要包含对这个 shrank jar 的引用,而不是对托管 guava 的远程存储库的引用。 But any jar added to the project would be discard 由 maven 作为工件发布到任何远程存储库时,因此无法解析 guava 依赖项,应用程序客户端最终会崩溃。
Guava 本身 advices to not use proguard 如果您的“应用程序”实际上是一个库,则让您的库的用户处理这种情况,使用他们自己的 proguard 来缩小 guava。但我不喜欢这个想法,因为我想提供一个简单的配置解决方案。
据我所知,proguard 提供的输出是某种可执行文件(jar、apk 等),因此,如果我缩小自己的库,最终输出将是一个 jar,而这个 jar,再次,无法作为工件发布,因为它会被丢弃(我尝试了几次)。
有什么方法可以在我自己的 java 库项目中使用 proguard 并将生成的输出传递给构建链,以便作为远程存储库而不是 jar 发布?
顺便说一句,我正在使用 gradle 来构建我的项目,但在这一点上,我将转向一个可以解决问题的 maven。
谢谢。
【问题讨论】: