我正在一个项目中使用Maven,我有几个我正在使用的依赖项,如Apache POI,Commons IO,Google Guava等。然而,我的同事担心将来会有一些他们的作者可以删除依赖项,不再可用,这会破坏我们的项目构建;例如,如果未来的开发人员必须重建项目mvn clean build
,那么仍然会找到这些依赖项。是否可以删除Maven依赖项?或者,一旦他们被授予Apache或公共存储库,他们终身存在?
答案 0 :(得分:3)
无法删除在Maven Central上发布的工件。这是故意的,没有这个安全网,没有人使用这些工件将来可能会依赖它们或者为了重建他们自己软件的历史版本。
来自the docs:
我可以更改已发布到中央存储库的工件吗?
没有。组件发布到中央存储库后,就无法更改。这条规则是为了保持稳定性和兼容性。
注意:"它不能改变"表示工件无变化,工件无删除。
所以,只要您从Maven Central采购,那么......
...将来有些依赖项可能会被其作者删除,不再可用,这会破坏我们的项目构建
......不是问题。
此外,即使Maven Central不再存在(并且没有任何东西可以替换它),您提到的工件(Apache POI,Commons IO,Google Guava)都是开源的,因此您可以自己构建工件并为它们提供服务由你决定。