1

我是新手。

给定企业级 Java 应用程序。源代码由 subversion 管理。

据我了解,一旦我完成了代码,我应该能够在 5 年后编译它并获得相同的结果,但我有点担心 maven 是否可以 100% 准确地处理它:

  1. maven上网时是否有可能带来损坏的jar(例如网络问题或镜像有不正确的jar)?
  2. 假设我想在 5 年后重新编译我的代码。是否可能不存在所需的jar?
  3. 企业应用程序依赖这种“不透明”的外部资源(例如互联网镜像)不是有风险吗?

在我之前的地方,我们利用了那个 svn:external - 我们在 svn 中有一个特殊的目录(供应商分支),用于所有第三个产品(jar)。对于每个产品及其特定版本,都有一个专用目录。应用程序代码使用svn external从供应商分支带来具体的 jar。

在这种配置中,我知道所有受源代码控制的 jar,并且我将能够在 5 年后重建我的应用程序,并将其与 5 年前相同的 jar 打包。

我错过了什么吗?

4

1 回答 1

2

是的,这是有风险的,但有办法解决这个问题。

  1. 这可能会发生,而且实际上经常发生。但是,要修复损坏的下载,您可以简单地从本地文件系统中删除该包并射击 Maven 以重新下载它。我不认为镜子中的包裹一旦出现就不会轻易损坏。
  2. 不知道维护者的官方说法是什么,但即使有人要确保库“永远存在”,也可能会发生硬件故障、公司被出售、流程发生变化等等。只要你信任某人除了你自己,你无法确定。
  3. 是的。

要真正解决这个问题,您可以使用NexusArchiva设置您自己的存储库(另请参阅SO:Maven 2 的最佳企业存储库工具?)。如果您有自己的索引启动并运行,那么您可以在未来几年完全控制依赖库的安全。当然,它可能仍然会中断:)

如果您经营的是小型企业,我认为更改流程和建立自己的镜像没有好处(附加值是什么?)。这svn:externals可能不是那么复杂的方法,但我个人也不会认为它不好。

我还可以补充一点,Maven 不仅仅是依赖管理。当你让 Maven 对你的项目有更多的控制权时,协同作用会越来越大,所以如果你最终切换到 Maven,那么依赖它的其他功能(更容易更新库、自动下载源、结构约定、插件架构、 ETC。)。

于 2011-05-30T15:14:21.283 回答