maven 父maven_Maven不会吮吸。 。 。 但是Maven文件会

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java maven部署_eclipse中maven项目部署到tomcat

下面就一一介绍这几种部署方式:1.打war包到tomcat/webapps目录这种方式其实跟非maven项目没什么区别,就是打包的方式不同之后在target目录下会生成war包,复制到tomcat/webapps目录即完成部署。2.使用tomcat-maven插件,在pom.xml的…

word 论文排版 —— 按指定格式章节的自动编号

在word中如何实现章节标题自动编号 标题样式与标题的编号是两个步骤,为标题建立编号是在为标题样式确定的基础后进行的。这是显而易见的,也即只有先定义了多级标题(也可使用 word 自带的标题样式),才可为这些多级标题自…

vb 获取mysql表第一行数据_vb如何将远程获取的数据插入本机数据表中

双击按钮添加如下代码Private Sub Command1_Click()Dim objRemoteConn As New ADODB.ConnectionDim objLocalConn As New ADODB.ConnectionDim objRs As ADODB.RecordsetDim strSql As StringobjRemoteConn.Open "providerSQLOLE…

ASP渲染下拉框使时间依次减少

<% xyear(now()) yyear(now())-1 Do While y>2002%><li><a href"#2015" class"treeview-time"><%y%></a></li><% yy-1 loop%>转载于:https://www.cnblogs.com/mazey/p/6512893.html

Spring Cloud对Hystrix的支持

Spring Cloud项目为Netflix OSS Hystrix库提供了全面的支持。 之前我已经写过有关如何使用原始Hystrix库包装远程调用的文章。 在这里&#xff0c;我将探讨如何将Hystrix与Spring Cloud结合使用 基本 实际上并没有什么大不了的&#xff0c;这些概念仅在特定于Spring引导的增强…

OA系统部署短信过程

安装dotNetFx40_Client_setup.exe插件 安装mysql_installer_community_V5.6.21.1_setup.1415604646.msi数据库 根据数据库版本安装相应驱动&#xff08;64位或者32位系统&#xff09; 安装mysql-connector-odbc-5.3.7-winx64.msi驱动&#xff08;ODBC&#xff09;工具 安装mysq…

centos6配置mysql5.7_CentOS 6/7 下 MySQL 5.7 安装部署与配置

一、前言1、本教程主要内容MySQL 5.7安装(yum)MySQL 5.7 ROOT账号密码修改MySQL 5.7基础使用与配置MySQL shell管理常用语法示例(用户、权限等)MySQL字符编码配置2、本教程环境信息与适用范围环境信息软件版本CentOS7.4 ReleaseMySQL5.7适用范围软件版本CentOSCentOS 6 & C…

hadoop伪分布式搭建 java_hadoop2.2.0伪分布式搭建

第一步&#xff1a;安装jdk我的linux版本是centos7&#xff0c;使用最简单的安装方式&#xff0c;这里首先说一下&#xff0c;由于系统会预装openjdk版本等其他各种版本&#xff0c;首先要做的是清除这些版本&#xff0c;然后iu安装oracle的jdk版本1.1 查看所有jdk版本并删除其…

北斗有 35 颗卫星,而 GPS 有 24 颗卫星,为什么二者数量不同?

作者&#xff1a;知乎用户链接&#xff1a;https://www.zhihu.com/question/21092045/answer/17164418来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。反对目前的两个不靠谱回答&#xff01;需要的卫星数目和别人占坑没有…

可行的DeltaSpike教程

在一个最近的项目中&#xff0c;我遇到了一个有趣的问题&#xff1a;采用被赋予单个对象的服务方法&#xff0c;并在一个夜间过程的上下文中重用相同的代码&#xff0c;该过程独立于应用程序而在数千个相同类型的对象上运行。 试图在两个地方维护如此大小和复杂性的相同过程真…

2017/3/8 函数指针/事件/委托....

函数指针&#xff1a; 定义&#xff1a;函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量&#xff0c;只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样&#xff0c;这里是指向函数。 函数指针有两个用途&#xff1a;调用函数…

java finalize 析构_close,析构函数和finalize:Java矛盾

try { FileInputStream in new FileInputStream(filename);BufferedReader readernew BufferedReader(new InputStreamReader(in));String line;while((linereader.readLine())!null){// read the file}}catch (Exception e) {System.out.println(e);}但是如果我尝试将命令添加…

sharesdk短信验证码的集成

在ShareSDK官网http://mob.com/注册并创建Android应用.申请APP_key,下载SDK等 根据官网开发文档导入SDK,目录结构如下 将以上文件按需放入Android Studio项目所要使用SMSSDK的Module所在的Libs里面&#xff0c;再在Module的build.gradle里面将libs加入仓库&#xff08;reposito…

java四神兽_SpringCloud五大神兽之Eureka

注册中心概述什么是注册中心&#xff1f;相当于服务之间的‘通讯录’&#xff0c;记录了服务和服务地址之间的映射关系。在分布式架构中服务会注册到这里。当服务需要调用其他服务时&#xff0c;就在注册中心找到其他服务的地址&#xff0c;进行调用注册中心的主要作用&#xf…

Mockito入门

本文是我们名为“ 用Mockito进行测试 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入了解Mockito的魔力。 您将了解有关“模拟”&#xff0c;“间谍”和“部分模拟”的信息&#xff0c;以及它们相应的Stubbing行为。 您还将看到使用测试双打和对象匹配器进行验证的过…

windows下dubbo-admin和zookeeper安装部署

1. 概述 ZooKeeper是Hadoop的正式子项目&#xff0c;它是一个针对大型分布式系统的可靠协调系统&#xff0c;提供的功能包括&#xff1a;配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务&#xff0c;将简单易用的接口和性能高效、…

jpush java api_JPush極光推送Java服務器端API

產品功能說明極光推送(JPush)是一個端到端的推送服務&#xff0c;使得服務器端消息能夠及時地推送到終端用戶手機上&#xff0c;讓開發者積極地保持與用戶的連接&#xff0c;從而提高用戶活躍度、提高應用的留存率。極光推送客戶端支持 Android, iOS 兩個平台。本 Android SDK …

Maven详解(转)

转自 https://www.cnblogs.com/hongwz/p/5456578.html 一.前言 以前做过的项目中&#xff0c;没有真正的使用过Maven&#xff0c;只知道其名声很大&#xff0c;其作用是用来管理jar 包的。最近一段时间在项目过程中使用Maven&#xff0c;用Maven构建的web项目&#xff0c;其项目…

javafx性能_对JavaFX Mobile应用程序进行性能分析

javafx性能注意&#xff1a;本文最初发表于2009年&#xff0c;仅供参考。 请查阅我们其余的JavaFX文章 。 对于每个JavaFX Mobile应用程序开发人员而言&#xff0c;今天都是美好的一天。 你想知道为什么吗&#xff1f; 因为JavaME SDK 3.0已发布。 根据我午休时听到的消息&…

egg.js java 生产数据_Egg 2.15.0 发布,阿里开源的企业级 Node.js 框架

值得注意的变化新特性[EXPERIMENT FEATURE] 支持单线程模式Bug 修复[TYPE] 支持config.static.dir的数组[TYPE] 修复中间件类型不兼容[TYPE] 修复当 esModuleInterop 为 true 时类型错误的bug其他优化文档设计原则企业级应用在追求规范和共建的同时&#xff0c;还需要考虑如何平…