什么是autovalue.shaded或什么是阴影罐?

时间:2016-02-29 20:46:17

标签: android auto-value

我一直在寻找一种方法来解析一个字符串以获得一个int,并偶然发现:

NumberUtils.toInt("blah",99);

我将它输入我的IDE并自动为我导入:

import autovalue.shaded.org.apache.commons.lang.math.NumberUtils;

所以我很想知道,autovalue.shaded是什么,为什么它是'阴影'org.apache.commons

使用它来满足我对NumberUtils的需求是否安全?

我尝试过搜索,但我不熟悉搜索结果所带来的假设知识,例如阴影罐和超级罐。

enter image description here

1 个答案:

答案 0 :(得分:1)

“着色”是在自己的jar文件中嵌入依赖项类的过程。 AutoValue部分用于限制瞬态依赖性,但也确保其依赖项的版本稳定性。

您可以在此处详细了解着色:https://maven.apache.org/plugins/maven-shade-plugin/

我强烈建议不要在代码中使用着色依赖项,因为这意味着您不再能够控制依赖项版本。您可以直接添加依赖关系,让您控制它何时更新。

您可能还想检查您的gradle依赖项,以确保您的compile目标中没有AutoValue。我从你的其他依赖项中看到这是一个Android项目,如果AutoValue在compile目标上,那么你将拥有一个比你想要的更大的APK。它应该通过apt包含在Annotation Processor类路径中,这样它的类就不会包含在最终产品中。 Hugo Visser有一个很好的gradle plugin用于启用Android项目的apt目标。

相关问题