3

我正在寻找一种解析字符串以获取 int 的方法,并偶然发现:

NumberUtils.toInt("blah",99);

我将它输入到我的 IDE 中,它会自动为我导入:

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

所以我很想知道,它是autovalue.shaded关于什么以及为什么它是“阴影” org.apache.commons

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

我尝试搜索,但我不熟悉搜索结果带来的假设知识,例如 shaded jar 和 uber jar。

在此处输入图像描述

4

1 回答 1

1

“着色”是将依赖类嵌入到您自己的 jar 文件中的过程。AutoValue 这样做的部分原因是为了限制瞬态依赖关系,同时也是为了确保它们的依赖关系的版本稳定性。

您可以在此处阅读有关着色的更多信息:https ://maven.apache.org/plugins/maven-shade-plugin/

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

您可能还想检查您的 gradle 依赖项,以确保您的compile目标中没有 AutoValue。我从您的其他依赖项中看到这是一个 Android 项目,如果 AutoValue 在compile目标上,那么您将拥有比您想要的更大的 APK。它应该包含在注释处理器类路径中, via apt,这样它的类就不会包含在您的最终产品中。Hugo Visser 有一个不错的gradle 插件apt,用于为 Android 项目启用目标。

于 2016-03-24T21:25:14.887 回答