maven 父maven

我不会参加整个Maven辩论,但可以说我是所有最佳实践的坚定支持者,对我而言,Maven是最佳实践的体现。 我的意思是说,Maven是围绕特定的最佳实践构建方法构建的。 注意,我说了一种特定的最佳实践构建方法。 在现实世界中,有不止几种构建方法可以胜任最佳实践,但是Maven假设其中只有一个。 这并不意味着其他人都不好,而只是意味着如果您使用Maven,则需要接受其假定的约定 。 。 。 或受苦。 对于任何“约定优于配置(CoC)”工具都是如此,并且Maven真是太糟糕了。

像所有设计模式一样,Maven是构建软件过程的可重用解决方案。

我认为偶尔讨论的Maven作为构建设计模式的概念是一个强有力的隐喻。 它很有用,因为它强调Maven与所有设计模式一样,是构建软件过程的可重用解决方案。 这是一个最佳实践解决方案,经过多年的大量使用,这些社区已经由聪明人改进。 利用设计模式构建软件的最明显好处与编写软件的好处相同。 即:

  • 您无需手动编写即可获得大量功能
  • 了解适用于一个项目的模式的工程师可以立即了解适用于另一项目的模式。

名义上,第一个是生产力,第二个是简单。 显然,每个人都希望提高生产力,即用更少的代码行完成更多工作。 但是,我实际上认为第二点-简单-更为重要。 我认为,整个工程领域可以归纳为“管理复杂性”的概念。 就复杂性而言,我直接指的是当您被成堆的意大利面条代码轰炸时感到的头痛。 设计模式通过以较高级别的注释密封大量的复杂性来帮助消除这种智力上的不和谐。 万一您忘记了,这就是我们腾出更多精力处理不可避免地驻留在下一个级别上的更大更酷的任务的原因。

正是这种观点使我将学习新项目的临时构建列为职业最烦人的方面之一。 即使非常干净地实施了ant或make生成,遵循了本地化的最佳实践并实现了软件生命周期的广泛自动化,它仍会用大量原始数据(即脚本行)来惩罚新开发人员。 请注意,这只是临时性 。 当然,这并不是敲响这些工具。 ant尤其擅长自动化任务并提供可重用的构建小部件集。 但是,它无助于为构建软件的整个过程提供可重用的解决方案,因此,它也无助于简化新开发人员理解构建的过程。

对于像Maven这样的CoC工具来说,最重要的约定是

因此,正如我所看到的,对于像Maven这样的CoC工具来说,最重要的是约定。 为了使Maven成功,您必须了解并遵循假定的约定。 不遵循约定的项目很快就会与Maven发生冲突。 首先,他们很难使用一种假定自己的构建过程的工具来实现自己的构建过程。 您很容易因无法轻松完成自己所做的事情而感到沮丧,但是前面的段落旨在表明实际上是您需要改变的人,至少在您打算继续使用Maven的情况下。 选择Maven时,您需要接受约定。 我不能,我建议您坚持使用Ant,它足够灵活,可以按您的条件满足您。 请记住,您正在失去利用Maven的设计模式方面来管理构建复杂性的能力。 如果您认为自己的构建没有复杂性问题,请向自己提出以下问题:

  • 我们团队中的每个工程师都可以轻松构建我们软件系统的所有组件吗?
  • 我们的工程师有信心修改构建脚本而不会感到焦虑吗?
  • 当需要有人解决构建问题时,我们的工程师会逃离房间吗?

因此,如果您到目前为止与我在一起,您可能会同意遵循Maven假定的惯例是进入Maven必杀技的关键先决条件。 这就是导致我得出Maven文档糟糕的结论的原因。 它们不仅不足,而且可能有害。 他们主要记录配置,而完全没有遵循关键的主题。 我认为对配置的强调在很大程度上是偶然的,这使新手认为配置Maven是可以的,甚至是正常的。

Maven文档不仅不足,而且可能有害。 它主要记录了配置,而完全未能遵循约定的关键主题。

通过文档,我主要是指访问Maven或Codehaus插件页面时发现的所有内容。 例如,考虑极其核心的maven-assembly-plugin。 浏览Maven网站上的文档 ,您会发现它几乎完全与配置有关。 正如我已经陈述和重申的那样,问题在于您真的不想配置Maven。 您想遵循约定。 配置应仅是最后的选择。

插件放东西,然后下一个插件找不到那个东西。 使用配置文件告诉Maven在哪里可以找到东西,然后没有该配置文件,其他任何人都找不到该东西。 配置Maven使您陷入配置反馈循环中,并且配置的几何增长不会使其具有pom可读性。 即使可以通过配置Maven使Maven满足您的需要,您也会很快得到一个难以理解的构建。

使用配置更改一个插件放置东西的位置,然后下一个插件找不到该东西。

因此,请避免配置! 而是坚持走常规路线。 您的工程师将知道并喜欢他们的构建,并且您将轻松利用Maven生态系统提供的许多好处-从丰富的插件库到存储库服务器和构建服务器。

但是如何学习Maven约定呢? 这都是关于社区的。 幸运的是,这是一个非常友好的社区。 这是我在尝试确定应如何在Maven中完成工作时使用的一些最重要的资源。

  • Sonatype博客
  • 堆栈溢出
  • Maven用户列表

另外,为了成为一个友好的社区成员,我正在使用此博客条目作为一系列Maven条目的介绍。 这些条目中的每一个都会概述重要的Maven约定。 我将详细介绍约定并提供示例poms。 因此,如果您想了解Maven约定,请保持联系。

参考: Maven不吸。 。 。 但是我们的W4G合作伙伴 Chad Davis 的Maven Docs Do来自zeroInsertionForce博客。

翻译自: https://www.javacodegeeks.com/2012/04/maven-does-not-suck-but-maven-docs-do.html

maven 父maven

maven 父maven_Maven不会吮吸。 。 。 但是Maven文件会相关推荐

  1. maven 父maven_Maven神秘化

    maven 父maven 由于我的Android开发的背景下,我比较习惯到Gradle ,而不是Maven的 . 尽管我知道Gradle基于Maven,但我从未调查过幕后发生的事情. 在过去的一周中, ...

  2. maven 父maven_Maven的春天

    maven 父maven 1.概述 本教程将讨论如何使用Maven设置Spring,并介绍使用Spring依赖项的特定用例. 最新的Spring版本可以在Maven Central中找到. 2.基本的 ...

  3. maven 父maven_Maven的鸟瞰图

    maven 父maven 我们每天要做的一件事是使用Maven通过发出诸如mvn install之类的构建命令来构建我们的项目. 然后,Maven查看我们项目的配置文件(亲切地称为POM),神奇地找出 ...

  4. java ee maven_针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom...

    java ee maven 为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务 ...

  5. 针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom

    为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务器上的部署并细化我的配置. ...

  6. Maven 父pom中dependencyManagement版本优先级高于传递依赖版本

    当使用了传递依赖,也就是使用了没有显示声明的依赖时,如果继承的<dependencyManagement/>中声明了使用的传递依赖的版本,那么最终使用的依赖是<dependencyM ...

  7. 创建maven父工程统一管理版本号

    一.建立一个maven工程 pom类型 统一管理依赖以及版本号 子工程不会使用所有的定义的依赖 子工程使用依赖时无需指定版本号 其pom.xml: <?xml version="1.0 ...

  8. 【MAVEN】如何在Eclipse中创建MAVEN项目

    目录结构: contents structure [+] 1,Maven简介 2,Maven安装 2.1,下载Maven 2.2,配置环境变量 2.3,测试 3,Maven仓库 3.1,Maven仓库 ...

  9. import maven project很慢_你确定 Maven 相关的东西全部了解吗?

    前言 如果你对 Maven 的了解只停留在怎么添加依赖包,你真的需要看接下来的内容. <dependencies><!-- https://mvnrepository.com/art ...

最新文章

  1. Code Review 是一场苦涩但有意思的修行
  2. linux 下 grep -c sh* /etc/passwd,Linux文本处理三剑客--grep
  3. linux内核修改工程环境,linux2.6.33内核移植s3c2410以和交叉环境编译搭建最终修改版.pdf...
  4. linux服务器安装php7_CentOS 7 下 PHP 7.1.12 安装配置
  5. 干得漂亮!法院在微信朋友圈精准投放“老赖”广告 网友:建议全国推广
  6. Docker+FastDFS+SpringBoot 快速搭建分布式文件服务器
  7. python对数据进行统计分析_数据分析员用python做数据分析是怎么回事,需要用到python中的那些内容,具体是怎么操作的?...
  8. 知识就是力量!(内含赠书福利)
  9. 机器学习算法应用_机器学习:定义,类型,算法,应用
  10. python平方根_如何在Python中找到平方根?
  11. eclipse设置背景色为豆沙绿
  12. 数码管——8段共阴极数码管
  13. Ogre开发日记(一)
  14. 哔哩哔哩怎么调节屏幕亮度
  15. AT8637S(PHS/EN输入接口单通道0.8A低压H桥IC)
  16. unity键盘控制移动操作(WASD)篇
  17. C#中窗体间传递数据的几种方法
  18. MDK537添加ARMCC编译器(Missing: Compiler Version 5的解决办法)
  19. 记录token的作用
  20. NT99141摄像头调试

热门文章

  1. System.gc()调用 - 适用的场景
  2. 真正的问题应该在我身上……
  3. javaWeb服务详解(含源代码,测试通过,注释)
  4. 高效的SQLSERVER分页查询
  5. 购物车的功能——CSS源码
  6. Spark SQL UDF2的使用
  7. idea 写html js 热部署
  8. tsc244标签编辑软件_能打小票的标签机,M110智能标签打印机来了!
  9. 手机打开python文件_使用python在计算机和手机之间通过wifi进行简单的文件传输...
  10. mysql中使用CASE WHEN