Maven 命令深度理解
1、前言
Maven 命令看起来简单,一学即会 。其实,Maven 命令底层是插件的执行过程。了解插件和插件目标才有助于深刻的理解 Maven命令。
2、插件与命令的关系
Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。

Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。所以,Maven 命令都是由插件来执行的。
3、Maven 命令的分类
Maven 提供了两种类型的命令。一种必须在项目中运行,视为项目命令;另外一种则不需要,视为全局命令。
4、Maven 命令格式解读
Maven 命令都是由插件来执行的,其语法格式如下所示:
mvn [plugin-name]:[goal-name]
例如,下面的命令:
mvn help:effective-pom
这个命令采用了缩写的形式,其全称是这样的:
org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom
此命令以分号为分隔符,包含了 groupId,artifactId,version,goal 四部分。
若 groupId 为 org.apache.maven.plugins 则可以使用上述的简写形式,也就是说和下面的命令是等价的:
mvn help:effective-pom mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom
都是执行了 maven-help-plugin 这个 plugin 中的 effective-pom 这个 goal。每次都要敲这么长一串命令是很繁琐的,因此才有了上述的简写的形式。
提醒:Maven 命名有要求,Maven 团队维护官方插件的保留命名方式是 maven-<myplugin>-plugin。
5、参考
http://www.mvnbook.com/maven-command.html
Maven 命令深度理解的更多相关文章
- maven命令的简单理解
mvn clean //在target文件夹中的一切都将被删除 mvn compile //编译源代码 mvn test //运行应用程序中的单元测试 mvn package //把jar打到本项 ...
- Java深度理解——Java字节代码的操纵
导读:Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展.但是对于 Java语言的深度理解和运用,毕竟是很少会有人涉及的话 ...
- js对象详解(JavaScript对象深度剖析,深度理解js对象)
js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...
- Maven学习总结(五):maven命令的含义及用法
Maven有许多命令,不管是在命令行(1),还是在Myecplise10的Maven项目--右键Run As(2),还是IDEA的左下角--Maven Projects--Maven项目名--Life ...
- 一条命令深度清理你的mac
一条命令深度清理你的mac mac 用了一段时间后很快发现硬盘空间不够了,就想找一些磁盘清理的工具,但是发现居然都是收费的. 就手工操作吧.方法其实非常简单. 就一条命令, cd / du -hd 5 ...
- Maven 命令格式及一些常用命令
Maven自身指定定义了一套对项目进行编译,测试,打包,运行,部署等工作的抽象.Maven自己是不实际负责这些工作的,而是把它们交给了插件.所以Maven命令的实际工作执行者是各种各样的插件. 要了解 ...
- 解决idea中执行maven命令失败的问题
1.问题描述 如上图所示,在使用idea 里的maven命令执行项目打包时,有时候会报如下一个错误. -Dmaven.multiModuleProjectDirectory system proper ...
- 深度理解Jquery 中 offset() 方法
参考原文:深度理解Jquery 中 offset() 方法
- Maven-eclipse运行maven命令
右击项目,点击Run as,如下图: 即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息 如果你想运行的maven命令在这里没有找到,点击Maven build创建新的命令, ...
随机推荐
- Python第六章-函数01-函数的概念和使用
函数 为了便于程序的维护和更好的实现模块化,好的程序都会分解为很多函数. 可以这么说,对于任何的编程语言,函数都是一个非常重要的概念. python 不仅简化了函数的定义过程,而且还大量借鉴了其他函数 ...
- OpenCV-Python 霍夫线变换 | 三十二
目标 在这一章当中, 我们将了解霍夫变换的概念. 我们将看到如何使用它来检测图像中的线条. 我们将看到以下函数:cv.HoughLines(),cv.HoughLinesP() 理论 如果可以用数学形 ...
- 为什么我的PayPal 买家账号往商家账号付款,反而从商家账号里面扣款?
如果读者踩了跟我一样坑的话,建议赶紧去检查一下 application.properties 配置文件!!! 解决方法: 不妨试试将上面的 clientId和clientSecret 切换为你的商 ...
- 性能优化之三:将Dottrace过程加入持续集成
之前分享过一篇如何做接口性能分析的文章,但是整个分析过程有点繁琐,需要写一个控制台程序调用被测接口,再预热.启动dottrace追踪,最后才能得到我们想要的性能分析报告.如果有办法一键生成性能分析报告 ...
- vuex知识要点梳理
该内容为个人总结,请勿喷. 欢迎各位大神前来指点.
- 阿里 IOS 面试官教你在面试中脱颖而出
前言: 知己知彼.百战不殆,面试也是如此. 只有充分了解面试官的思路,才能更好地在面试中充分展现自己. 今天,阿里高级技术专家将分享自己作为面试官的心得与体会.如果你是面试者,可以借此为镜,对照发现自 ...
- JavaScript new 的时候到底发生了什么?
function Person(name) { this.name = name; } let liLei = new Person('lilei'); console.log(liLiei.name ...
- Linux基础:Day06
网路安全介绍背景: 早起的互联网 -- 1980年代 ,我们需要共享数据,传输数据:所传输或者共享的数据均为明文: 随着互连网发展,安全称为了国家的一种战略资源: 我们做的,比如编程,运维 -- 手工 ...
- 曹工说Redis源码(3)-- redis server 启动过程完整解析(中)
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
- 原生JS实现Ajax的跨域请求
原生JS如何实现Ajax的跨域请求? 在解决这个问题之前,我们务必先清楚为什么我们要跨域请求,以及在什么情况下会跨域请求. 了解一下:“同源策略”,你就知道了: 同源策略限制从一个源加载的文档或脚本如 ...