我一直在寻找一种方法来解析一个字符串以获得一个int,并偶然发现:
NumberUtils.toInt("blah",99);
我将它输入我的IDE并自动为我导入:
import autovalue.shaded.org.apache.commons.lang.math.NumberUtils;
所以我很想知道,autovalue.shaded
是什么,为什么它是'阴影'org.apache.commons
?
使用它来满足我对NumberUtils
的需求是否安全?
我尝试过搜索,但我不熟悉搜索结果所带来的假设知识,例如阴影罐和超级罐。
答案 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
目标。