Maven依赖管理的主要优点是什么?我们在服务器上有一个版本化的 lib 文件夹,每个开发人员只需在 IDE 中导入该目录并使其保持最新。Maven 能比这更简单吗?
6 回答
使用每个项目的库似乎是一个简单的解决方案,而且确实如此。但最终你会遇到问题:
- 你怎么记得你从哪里来
foo.jar
的? - 你确定这是一个没有黑客篡改的合法来源吗?
- 具体是哪个版本
foo.jar
?它是原始版本还是您修补的东西? - 你想要 JavaDoc/sources吗?
foo.jar
需要a.jar
哪个需要y.jar
哪个需要z.jar
需要... 您真的想下载所有这些并单独管理吗?- 你开始第二个项目。现在你有两个lib 文件夹。您是复制 jar 还是从第一个项目中引用它们?
- 您的第二个项目需要一个 JAR 的不同版本。你怎么处理这个?
- 想象一下,您想升级
foo.jar
到下一个版本。使用 Maven,这是一个一分钟的任务。使用 lib 文件夹意味着:搜索网络、下载 JAR、将其放在正确的位置、可能重命名它、删除旧版本、添加新版本、提交更改、诅咒、对所有依赖项执行相同操作, ... - 您想与其他人分享您的项目。他们可能不想要您的 JAR 版本 - Maven 有一个简单而有效的机制来覆盖依赖项。
- 最终,您的法律部门会要求您保证您的项目没有不兼容的许可证。Maven 可以为您提供所有依赖项的所有许可证的报告。
使用 maven,您可以拥有一个私有存储库,或者使用公共存储库(如 maven2)来获取您在项目中使用的库,因此您不必亲自下载它们并在您的同事之间使用您的 subversion 服务器管理它们。
如果您想将一个库更改为另一个库,或者将其更新到较新的版本,您只需修改 maven 配置文件中的版本号或库名称即可完成,而无需关心在哪里可以下载库来自,而不必与大家分享。您只需共享您的 pom.xml 文件。
Maven 不仅给你这个,你可以配置如何打包应用程序(WAR、EAR、JAR、APK 等),编译它(JDK 版本,参数等),甚至可以配置如何创建 Eclipse 结构你的项目,所以你可以创建一个只有你的源、资源和神奇的“pom.xml”maven配置文件的新项目。
你应该试一试!
当然 Maven 很棒,但有时像您这样的版本化 lib 文件夹至少看起来更简单。当您使用没有 maven 元数据的库时,您需要做一些工作才能将其放入您的 Maven 存储库中(您可能应该在放置这些东西的某个服务器上仍然有一个中央存储库)。
是的,它可以!
"each developer just need to import that dir in the ide and keep it up to date"
Maven 自动执行此操作 ;-)
如果您使用持续集成和其他部署机制,它也有很大的优势。您可以在任何环境中轻松构建项目,而无需关心某些 lib 文件夹。此外,还有很多关于构建、部署、代码分析等的插件。
通过使用 Maven 依赖项,您将获得以下优势:
1. 连贯性: - Maven 允许组织标准化一组最佳实践。因为 Maven 项目遵循标准模型,所以它们不那么不透明。美国遗产词典中对这个术语的定义完美地捕捉了这个词的含义:“以有序、合乎逻辑和美学上一致的部分关系为标志。”
2. 可重用性: - Maven 建立在重用的基础之上。当您采用 Maven 时,您实际上是在重用整个行业的最佳实践。
3. 敏捷性: - Maven 降低了重用构建逻辑和组件的障碍。使用 Maven 时,更容易创建组件并将其集成到多项目构建中。开发人员可以更轻松地在不同项目之间切换,而无需伴随定制的本土构建系统的陡峭学习曲线。
3. 可维护性: - 采用 Maven 的组织可以停止构建构建,并开始专注于应用程序。Maven 项目更易于维护,因为它们的意外更少并且遵循通用模型。
点此了解更多福利
Maven 依赖管理的额外好处:
- 很容易获得大多数库的 Javadoc
- 大多数库的源代码很容易获得(例如,如果你想调试某些东西很有用)
- 在编译、运行、测试时,很容易指定和分析 jar 在什么依赖项中需要什么。