代码之家  ›  专栏  ›  技术社区  ›  SanThee

我们可以依靠maven在运行时处理类加载问题吗?

  •  2
  • SanThee  · 技术社区  · 7 年前

    亲爱的,

    我们正在将一个遗留项目从ant迁移到maven。

    有很多依赖项,我们希望对它们进行清理。

    This question (特别是第一条评论)确实引起了一些担忧。。。

    这是一个大型项目,在整个日历年中使用情况各不相同,我们没有太多的测试覆盖率,所以“只运行测试”是我们不能做的事情。

    感谢您的想法和见解,非常感谢您的所有意见。。。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sofo Gial    7 年前

    为了经济起见,让我们假设没有现存的bug。

    什么事情会以不可预测的方式发生?

    • 即使您能够编译项目,您也永远不会100%确定您已经正确地迁移了所有内容。默认值的处理方式可能与Ant和Maven不同。因此,您可能使用了一个依赖项(瞬时或非瞬时),其工作方式与原始依赖项略有不同。
    • Maven比Ant更加标准化,这意味着您不可能总是在Maven和Ant中做完全相同的事情。Ant可以使用脚本,而Maven可以使用您无法控制的插件。这可能导致应用程序上出现不同的行为。

    你能做些什么来解决这个问题?

    • 投入一些时间,编写一些集成测试,至少是happy path,再加上几个常见的红色路径。
    • 测试,测试,测试。手动测试可以揭示意外的行为。

    请始终记住,迁移会带来风险。此外,这可能是从现在开始接受单元和集成测试的一个很好的理由。:)

        2
  •  1
  •   Karol Dowbecki    7 年前

    是的,任何编译的项目在运行时都有多种可能失败的方式,例如针对不同的库版本运行。

    至少您必须比较输出工件,因为最终Ant和Maven都会构建一个可部署工件:WAR或带有依赖项的JAR。检查两个库的版本,它们很可能会有所不同,因为Ant不处理依赖项解析(除非使用Ivy)。