maven 父maven_Maven的鸟瞰图

maven 父maven

我们每天要做的一件事是使用Maven通过发出诸如mvn install之类的构建命令来构建我们的项目。 然后,Maven查看我们项目的配置文件(亲切地称为POM),神奇地找出要执行的操作,并且,嘿,您的构建已完成。 我想我们经常这样做,以至于我们从来没有考虑过幕后发生的事情,在某些情况下甚至从未了解过发生了什么。 该博客简要介绍了Maven构建生命周期,并揭示了在您发出诸如mvn clean install之类的命令时会发生什么。

如果您曾经阅读过Maven文档,那么您将了解到Maven都是关于面向对象的分层构建结构。 在本文中,有三个主要伪像:构建生命周期,构建阶段和目标,因此,一个很好的起点是解释这些术语之间的关系。 看下面的UML图:

直接进入,您会看到Maven HAS 1具有一个或多个构建生命周期,每个生命周期具有一个或多个构建阶段,它们以给定的顺序执行。 同样,每个构建阶段都有一个或多个构建目标,这些目标也将以给定的顺序执行。

定义构建阶段的一个好方法是举一个例子。 Maven文档列出了所谓的默认生命周期,以下是其构建阶段:

  1. 验证 –验证项目是否正确并且所有必要信息均可用
  2. 编译 –编译项目的源代码
  3. 测试 –使用合适的单元测试框架测试已编译的源代码。 这些测试不应要求将代码打包或部署
  4. 打包 –接受编译后的代码,并将其打包为可分发的格式,例如JAR。
  5. 集成测试 –处理并在必要时将程序包部署到可以运行集成测试的环境中
  6. 验证 –运行任何检查以验证包装是否有效并符合质量标准
  7. install –将软件包安装到本地存储库中,以作为本地其他项目中的依赖项
  8. 部署 –在集成或发布环境中完成,将最终程序包复制到远程存储库,以便与其他开发人员和项目共享。

因此,我们可以将构建阶段定义为照顾构建生命周期的一部分的阶段,例如编译或测试项目。

您可以通过在命令行上指定生成阶段来告诉Maven生成项目。 例如:

mvn install

…表示“在默认的构建生命周期中执行直到安装阶段的所有构建阶段,包括安装阶段”。
…发行了一张

mvn clean install

…表示“将清洁生命周期的所有构建阶段进行到(包括) 清洁构建阶段,然后在默认构建生命周期中执行直到安装阶段的所有构建阶段,包括安装阶段”。

由此可以推断出

mvn test

…命令将执行验证构建阶段,并执行其目标; 然后是编译阶段,执行其目标,最后是测试阶段,执行其目标。

那么,目标是什么? 在Maven世界中,目标可以定义为单个任务或工作,实际上可以对构建项目起到实际作用。 如果我们将Maven与您可能所在的公司进行比较,则生命周期将是董事会,构建阶段是中层管理人员以及完成工作的工人的目标。

大多数构建阶段都附带有默认目标,例如,您可能已经猜到, 编译器构建阶段绑定到了compile:compile目标,同样, 安装构建阶段也绑定到install:install目标。

您还可以使用POM文件中的<plugin>元素将您自己的目标绑定到阶段,这可以用于覆盖目标的默认行为或添加新目标和新行为。

关于目标 s最后要注意的一点是,它们通常与POM的包装类型相关联。 例如,这是有道理的,例如:editor:compile目标与jarejb打包相关联,但就POMwarear包而言,这毫无意义。

阅读本文时,您可能已经了解到,按照惯例,目标名称包含冒号,而构建阶段的名称则不包含。 这使您可以在Maven命令行上指定目标,而不会将它们与构建阶段混淆。 例如:

mvn compiler:compile

…将执行compile:compile目标,该目标处于默认构建生命周期的编译器构建阶段。 而且,一点点混在一起…

mvn install tomcat:redeploy

…将在默认的构建生命周期中执行直到安装 (包括安装 )的所有构建阶段,然后执行Tomcat Mojo中的tomcat:redeploy目标。

那就是一英里高的鸟瞰Maven。

1 字的UML感。

参考: Captain Debug's Blog博客中JCG合作伙伴 Roger Hughes 的Maven鸟瞰图 。


翻译自: https://www.javacodegeeks.com/2012/06/birdss-eye-view-of-maven.html

maven 父maven

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

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

相关文章

vue animation css实现左右折叠面板

<div class"left" :class"boxshow ? a1: a2" id"showBox">这里是折叠面板的内容 </div> <i id"left" class"el-icon-d-arrow-left" click"boxshow !boxshow" :class"boxshow ? a3: a4&quo…

mysql断网_断网的情况上如何访问本机的mysql

断网的情况下怎么访问本机的mysql我发现把网络断掉后mysql就不能访问了。使用phpmyadmin(http://localhost/phpmyadmin/index.php?)访问&#xff0c;输入用户名和密码后点击登陆&#xff0c;就会出现“#2002 Cannot log in to the MySQL server”错误。使用命令行登陆&#xf…

Py IO model

事件驱动模型 上节的问题&#xff1a; 协程&#xff1a;遇到IO操作就切换。 但什么时候切回去呢&#xff1f;怎么确定IO操作完了&#xff1f; 很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率&#xff0c;其维持一定合理数量的线程&a…

Fiddler 扒取微信小程序的图片

安装 Fiddler http://www.downza.cn/soft/234727.html Tools-options配置 如果无法抓取到PC微信小程序 解决办法&#xff1a; 打开小程序&#xff0c;任务管理器找到小程序所在位置&#xff0c;删除文件内容 一般路径为\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime 删除…

JLBH – Java延迟基准线束介绍

在这篇文章中&#xff1a; 什么是JLBH 我们为什么写JLBH JMH和JLBH之间的区别 快速入门指南 什么是JLBH&#xff1f; JLBH是可用于测量Java程序中的延迟的工具。 它具有以下功能&#xff1a; 旨在运行比微型基准测试更大的代码。 适用于使用异步活动&#xff08;如生产者…

mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析

mysql5.7,启用基于logical_clock的多线程复制,发现error日志增长很快&#xff0c;查看日志发现大量关于多线程复制的Note级别日志。1234567891011121314152018-07-03T03:22:01.63837108:00 8941 [Note] Multi-threaded slave statistics for channel : seconds elapsed 298; e…

js比较数字相等

示例代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><title>js比较数字相等</title></head><body><script type"text/javascript">//设置误差范围值--机…

Nginx 怎么给一台服务器,配置两个域名?详细的解说+截图教程

一、 环境、条件准备 一台云服务器&#xff08;我的是腾讯的centos7&#xff09; 至少两个域名。&#xff08;我的是simuhunluo.xyz和simuhunluo.top。这两个域名之间没有任何关系&#xff0c;我是在阿里用两个账号分别注册的。&#xff09; 云服务器上面已经搭建了ngin…

怎样从frm ibd恢复mysql_怎样从frm,ibd恢复MYSQL

2015-07-01 回答method #1 – create work tables1. start up clean/fresh instance of mysql with innodb_file_per_table enabled.2. now, we need to find the table id that mysql is currently set at, as well as the table id for the table we need to recover.note:st…

extjs6 mvvm_ZK 6中的MVVM初探

extjs6 mvvmMVVM与MVC 在上一篇文章中&#xff0c;我们已经看到Ajax框架ZK如何采用CSS选择器启发的Controller来在View中连接UI组件并监听它们的事件。 在此ZK MVC模式下&#xff0c; View中的UI组件无需绑定到任何Controller方法或数据对象。 使用选择器模式作为将View状态和事…

多线程 调用 axis 报错_java笔记录(三、多线程)

1、进程和线程&#xff1a;进程&#xff1a;正在进行的程序。每一个进程执行都有一个执行顺序&#xff0c;该顺序是一个执行路径&#xff0c;或者叫一个控制单元。线程&#xff1a;进程内部的一条执行路径或者一个控制单元。两者的区别&#xff1a;一个进程至少有一个线程进程在…

使用PropertyPlaceholderConfigurer读取属性文件

1.简介 通常&#xff0c;当我们考虑将多个应用程序部署到生产环境之前在其中部署服务器时&#xff0c;可以在外部属性文件中配置特定于环境的参数 。 它可能是数据库详细信息&#xff0c;对于测试服务器和生产服务器而言&#xff0c;这是不同的。 因此最好选择将数据库配置文件…

第二天:Swift手势操控弹性按钮

参考链接:https://www.jianshu.com/p/f080ede0f3a8 1 import UIKit2 3 fileprivate let buttonH: CGFloat 2004 5 class ViewController: UIViewController, UIGestureRecognizerDelegate {6 7 IBOutlet weak var segmentControl: UISegmentedControl!8 var randomBtn…

asp获取mysql数据报错_ASP.NET在删除掉数据库文件后报错处理

在开发asp.net mvc程序时&#xff0c;默认时我们会使用LocalDB, 我们有时会以为删除掉App_Data目录就可以自动新建数据库&#xff0c;但是我们在网站重新启动后(进入Account)就会发现报如下错误&#xff1a;The ASP.NET Simple Membership database could not be initialized. …

按插入顺序排序的map

LinkedHashMap HashMap是无序的&#xff0c;HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方。所以在按照一定顺序put进HashMap中&#xff0c;然后遍历出HashMap的顺序跟put的顺序不同。单纯的HashMap是无法实现排序的。 区别&#xff1a; 1.HashMap里面存入…

lua excel to mysql_在Lua程序中使用MySQL的教程

http://www.jb51.net/article/66972.htmhttps://www.2cto.com/database/201501/372767.html常用sql语句&#xff1a;mysql -h localhost -u 用戶名 -p密碼 //連接數據庫use desk_show; //使用數據庫show tables; …

java实践_Java怪异实践

java实践总览 Java中有许多实践使我感到困惑。 这里只是一些。 使用-Xmx和-Xms 选项-Xmx广泛用于设置最大内存大小。 如Java HotSpot VM Options中所述&#xff0c;以-X开头的选项是非标准的&#xff08;不保证所有VM实施都支持该选项&#xff09;&#xff0c;并且在以后的JDK…

函数参数:

函数参数&#xff1a;一、位置参数:按顺序一一对应赋值 def stu(name,age,course,country) stu("刘老根",25,"linux","CN")二、关健参数&#xff1a;在实参中使用 号赋值&#xff08;可以不按顺序&#xff09; def stu(name,a…

mysql group by 重复_mysql – 使用GROUP BY删除重复项的查询

id_specific_price id_product-------------------------------1 22 23 24 35 36 37 3需要删除重复项,预期结果&#xff1a;id_specific_price id_product-------------------------------3 27 3SELECT *FROM ps_specific_priceWHERE id_specific_price NOT IN(SELECT MAX(id_s…

您的JAX-RS API并非天生就等于:使用动态功能

这次&#xff0c;我们将讨论一些有关JAX-RS 2.0 API的内容&#xff0c;并涉及该规范的一个非常有趣的方面&#xff1a; 动态功能以及它们的有用性。 传统上&#xff0c;当配置和部署JAX-RS 2.0 API&#xff08;使用Application类&#xff0c;从servlet引导或通过RuntimeDelega…