maven 父maven_Maven的鸟瞰图
maven 父maven
如果您曾经阅读过Maven文档,那么您将了解到Maven都是关于面向对象的分层构建结构。 在本文中,有三个主要伪像:构建生命周期,构建阶段和目标,因此,一个很好的起点是解释这些术语之间的关系。 看下面的UML图:
![](https://2.bp.blogspot.com/-WaxK-i33vD0/T9iaaL0LYhI/AAAAAAAAAao/crMlEBgAb1M/s320/Screen+Shot+2012-02-17+at+14.48.51.png)
直接进入,您会看到Maven HAS 1具有一个或多个构建生命周期,每个生命周期具有一个或多个构建阶段,它们以给定的顺序执行。 同样,每个构建阶段都有一个或多个构建目标,这些目标也将以给定的顺序执行。
定义构建阶段的一个好方法是举一个例子。 Maven文档列出了所谓的默认生命周期,以下是其构建阶段:
- 验证 –验证项目是否正确并且所有必要信息均可用
- 编译 –编译项目的源代码
- 测试 –使用合适的单元测试框架测试已编译的源代码。 这些测试不应要求将代码打包或部署
- 打包 –接受编译后的代码,并将其打包为可分发的格式,例如JAR。
- 集成测试 –处理并在必要时将程序包部署到可以运行集成测试的环境中
- 验证 –运行任何检查以验证包装是否有效并符合质量标准
- install –将软件包安装到本地存储库中,以作为本地其他项目中的依赖项
- 部署 –在集成或发布环境中完成,将最终程序包复制到远程存储库,以便与其他开发人员和项目共享。
因此,我们可以将构建阶段定义为照顾构建生命周期的一部分的阶段,例如编译或测试项目。
您可以通过在命令行上指定生成阶段来告诉Maven生成项目。 例如:
mvn install
…表示“在默认的构建生命周期中执行直到安装阶段的所有构建阶段,包括安装阶段”。
…发行了一张
mvn clean install
…表示“将清洁生命周期的所有构建阶段进行到(包括) 清洁构建阶段,然后在默认构建生命周期中执行直到安装阶段的所有构建阶段,包括安装阶段”。
由此可以推断出
mvn test
…命令将执行验证构建阶段,并执行其目标; 然后是编译阶段,执行其目标,最后是测试阶段,执行其目标。
那么,目标是什么? 在Maven世界中,目标可以定义为单个任务或工作,实际上可以对构建项目起到实际作用。 如果我们将Maven与您可能所在的公司进行比较,则生命周期将是董事会,构建阶段是中层管理人员以及完成工作的工人的目标。
大多数构建阶段都附带有默认目标,例如,您可能已经猜到, 编译器构建阶段绑定到了compile:compile目标,同样, 安装构建阶段也绑定到install:install目标。
您还可以使用POM文件中的<plugin>元素将您自己的目标绑定到阶段,这可以用于覆盖目标的默认行为或添加新目标和新行为。
关于目标 s最后要注意的一点是,它们通常与POM的包装类型相关联。 例如,这是有道理的,例如:editor:compile目标与jar和ejb打包相关联,但就POM , war或ear包而言,这毫无意义。
阅读本文时,您可能已经了解到,按照惯例,目标名称包含冒号,而构建阶段的名称则不包含。 这使您可以在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
maven 父maven_Maven的鸟瞰图相关推荐
- maven 父maven_Maven神秘化
maven 父maven 由于我的Android开发的背景下,我比较习惯到Gradle ,而不是Maven的 . 尽管我知道Gradle基于Maven,但我从未调查过幕后发生的事情. 在过去的一周中, ...
- maven 父maven_Maven的春天
maven 父maven 1.概述 本教程将讨论如何使用Maven设置Spring,并介绍使用Spring依赖项的特定用例. 最新的Spring版本可以在Maven Central中找到. 2.基本的 ...
- maven 父maven_Maven不会吮吸。 。 。 但是Maven文件会
maven 父maven 我不会参加整个Maven辩论,但可以说我是所有最佳实践的坚定支持者,对我而言,Maven是最佳实践的体现. 我的意思是说,Maven是围绕特定的最佳实践构建方法构建的. 注意 ...
- Maven 父pom中dependencyManagement版本优先级高于传递依赖版本
当使用了传递依赖,也就是使用了没有显示声明的依赖时,如果继承的<dependencyManagement/>中声明了使用的传递依赖的版本,那么最终使用的依赖是<dependencyM ...
- Maven 父文件的依赖 子文件不能接收_maven报错:Non-resolvable parent POM for com...
今天碰到了以下问题,这个说一下解决方案 下面是我遇到问题查找的相应的解决方法,发现并未解决,但以下也是一个可能的解决方案. 在做淘淘商城的项目一开始搭建后台maven工程的时候,做Taotao-com ...
- Maven父工程(统一管理依赖)
之前一段时间,我和在其他公司工作的同行朋友聊天时无意间聊到项目依赖问题,发现很多公司(包括我们公司)都是有自己一个统一的父工程,而这个工程没有任何的逻辑代码,说起来只有一个pom.xml文件,而这 ...
- 创建maven父工程统一管理版本号
一.建立一个maven工程 pom类型 统一管理依赖以及版本号 子工程不会使用所有的定义的依赖 子工程使用依赖时无需指定版本号 其pom.xml: <?xml version="1.0 ...
- 去除maven父依赖_如何在Maven中从父项目中排除依赖项?
我遇到了和你一样的问题. 在我的项目中,让我们称父pom为parent.pom. parent定义了log4j,slf4j是这样的: org.slf4j slf4j-api ${slf4j-api.v ...
- maven父pom和子pom的版本号一并批量修改
1 设置新的版本号 mvn versions:set -DnewVersion=1.7-SNAPSHOT 2 撤销设置 mvn versions:revert 3 提交设置 mvn versions: ...
最新文章
- Vue父组件调用子组件的方法并传参的两种方式(用$refs.refName.functionName、window.function)
- 2016目录怎么生成_0基础学标书编写,目录可以这样生成,不用再手动排页码了...
- DGL教程【三】构建自己的GNN模块
- CSS 单行溢出文本显示省略号...的方法(兼容IE FF)(转)
- PHP简单操作Excel
- python修改html表格,使用styles和css更改pandas dataframe html表python中...
- 选择Java加密算法第2部分–单密钥对称加密
- 阿里程序员常用的 15 个高效工具,大部分已开源!
- 系统总线频率和外频有何区别?
- C++中的两个知识点
- HTML实时预览-LiveReload完整使用方法
- 查询数据库中表的空间使用情况
- 2019 送给每位读者的几点拙见
- PAT L1 049 天梯赛座位分配
- 机器学习-数据归一化方法(Normalization Method)
- 本草纲目pdf彩图版下载_本草纲目pdf下载|本草纲目彩色插图版PDF完整版_ - 极光下载站...
- 如何升级到 Ubuntu 20.04
- Python爬虫实战四之抓取淘宝MM照片
- 火焰纹章核心功能的实现
- python opencv入门 鼠标绘图(4)
热门文章
- Oracle入门(七A)之表空间配额(quota)
- JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)
- JavaFX之TableView的TableRow
- JavaScript常用单词整理总结
- 蓝桥杯JAVA省赛2013-----B------5(有理数类)
- java语言中的访问权限控制符有哪些,18.Java的访问控制符
- df、du和fdisk命令的区别
- spring react_使用Spring WebFlux构建React性REST API –第3部分
- selenium 4_Selenium4 Alpha –期望什么?
- cuba 平台_CUBA 7的新功能