Apache Commons Lang3和Apache Commons Text有什么区别?

16

我想知道Apache Commons Lang3 (org.apache.commons.lang3) 和 Apache Commons Text (org.apache.commons.text) 有什么区别?

我发现它们之间有许多相似之处。
例如,它们都拥有 StringEscapeUtils:

但是我也看到了许多不同之处。
那么我该使用Lang3还是Text?
或者说这两个库的常见用例是什么?


2
阅读你自己链接的文档。commons-lang3版本已被弃用,推荐使用commons-text版本。我想其他相似之处可能也有类似的弃用原因/消息。 - rmlan
简单建议:尽量避免使用任何已废弃的 API。 - Naman
https://commons.apache.org/proper/commons-lang/article3_0.html - OneCricketeer
2个回答

5

好的,text方法声明如下:

这段代码是从Apache Commons Lang 3.5调整过来的。

看起来他们只是计划将该方法从一个库移动到另一个库。你需要让那些代码的作者解释原因。

然而,值得指出的是,lang3text的编译依赖项,因此如果您包含了text,您也会有lang3

https://github.com/apache/commons-text/blob/master/pom.xml#L61-L65


4
“因此,如果你包含了文本,那么你就已经有了lang3,除非他们决定改变实现方式!依赖于未记录的依赖关系不是一个好主意。” - Stephen C
{btsdaf} - OneCricketeer
这些项目有不同的目的 - 其中一个是另一个的依赖项。我不参与Apache Commons的贡献,所以我无法回答他们为什么在项目之间复制代码的原因。 - OneCricketeer
6
既然你要求了,这个信息在 javadocs 中没有记录。如果重新设计“text”,他们是否会犹豫删除 POM 文件中的“lang3”依赖项?他们不太可能考虑到某人需要同时使用两个 API 的“边缘情况”。如果应用程序员确实想/需要在其代码中同时使用 lang3text,则明确声明两者的依赖关系是明智的选择。 - Stephen C
3
参考链接:http://www.kyleblaney.com/maven-best-practices/ - “使用未声明的依赖项”在Maven项目中,当您使用未经声明的依赖项时,可能会遇到问题。这意味着您在pom.xml文件中未添加对该依赖项的明确引用,但您的代码仍然在编译和运行时使用它。使用未声明的依赖项可能会导致以下问题:1.构建失败或无法正常工作 2.存在安全漏洞或依赖项冲突 3.在不知情的情况下更改了依赖项版本为避免这些问题,请始终在pom.xml文件中声明所有依赖项,包括传递性依赖项,并确保使用正确的版本。 - Stephen C

1

commons-lang3中的文本工具已被标记为过时,Javadoc指向commons-text。


1
请考虑编辑您的回答以回答OP的问题,即“我应该使用Lang3还是Text?或者这两个库的常见用例是什么?” - Bill Horvath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接