Maven默认周期与插件
运行 cmd
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
这个archetype(模板)是一个插件,generate是目标指令(goal)
插件就是集成了若干个goal的合集
Maven标准的项目结构:
| src/main/java | 源代码 | 
| src/main/resources | 资源文件 | 
| src/main/filters | 资源过滤 | 
| src/main/config | 配置文件 | 
| src/main/scripts | 脚本 | 
| src/main/webapp | Web程序源代码 | 
| src/test/java | 测试的源代码 | 
| src/test/resources | 测试的资源 | 
| src/test/filters | 测试的资源过滤 | 
| src/it | 集成测试(主要用于插件) | 
| src/assembly | Assembly descriptors | 
| src/site | 自动生成的网站 | 
生成后在根目录会有个pom.xml,然后是src和target文件夹:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId> 包名
<artifactId>my-app</artifactId> 项目名,也用于生成的jar包名
<packaging>jar</packaging> 默认为jar,后面详述
<version>1.0-SNAPSHOT</version> 版本
<name>my-app</name> 用于文档
<url>http://maven.apache.org</url> 用于文档
<dependencies>
<dependency> 一个外部依赖
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
构建:
mvn package
这个package是自带命令,是default构建周期的一个步骤
比如运行compile,会自动按以下顺序执行:
- validate
- generate-sources
- process-sources
- generate-resources
- process-resources
- compile
可以测试一下:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
关于构建周期:有三个是内置的,default(默认), clean(清理target文件夹) , site(生成站点文档)
每个周期都是由不同步骤组成,比如default就包括了:
- validate - 校验
- compile -编译
- test - 单元测试
- package - 打包成jar或war等
- integration-test - 集成测试
- verify - 校验
- install -部署到本地代码库,供其他项目本地调用
- deploy - 部署到远程代码库,供他人或项目远程调用
下面的步骤总是会从顶部开始,按顺序执行
同一个命令可以同时执行多个步骤,如
mvn clean install 会先clean,再install
一个插件的goal代表一个特定的任务,
而某个步骤实际上是调用某个插件的goal,具体哪个goal跟项目本身有关
所以,也可以在命令行直接执行插件goal,如:
mvn dependency:copy-dependencies
mvn archetype:generate
一个周期步骤可以关联多个插件goal
1.默认关联:通过指明pom.xml的packaging,默认为jar
| 步骤 | 插件goal | 
| process-resources | resources:resources | 
| compile | compiler:compile(插件可以有多个goal) | 
| process-test-resources | resources:testResources | 
| test-compile | compiler:testCompile(插件可以有多个goal) | 
| test | surefire:test | 
| package | jar:jar | 
| install | install:install | 
| deploy | deploy:deploy | 
2.手动关联:通过pom.xml的plugins
插件的goal本身都有个默认关联的步骤,但goal也可能关联到多个步骤,可以具体指定一个
<build>
<plugins>
<plugin>
<groupId>com.mycompany.example</groupId>
<artifactId>display-maven-plugin</artifactId>
<version>1.0</version>
<executions>插件配置
<execution>
<phase>process-test-resources</phase>具体步骤
<goals>
<goal>time</goal>具体goal
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这个goal将附加到那个步骤的goal的后面执行,也可以自己指定顺序
更详细的三个周期步骤,及相关goal对应表:
Clean Lifecycle
| pre-clean | ||
| clean | 构建的所有东西都被移除 | clean:clean | 
| post-clean | 
Default Lifecycle
| validate | ||
| initialize | 初始化,比如设环境变量,建文件夹 | |
| generate-sources | ||
| process-sources | ||
| generate-resources | ||
| process-resources | resources:resources | |
| compile | 编译 | compiler:compile | 
| process-classes | 编译后处理 | plugin:descriptor | 
| generate-test-sources | ||
| process-test-sources | resources:testResources | |
| generate-test-resources | ||
| process-test-resources | ||
| test-compile | 测试的编译 | compiler:testCompile | 
| process-test-classes | ||
| test | surefire:test | |
| prepare-package | ||
| package | jar:jar and plugin:addPluginArtifactMetadata | |
| pre-integration-test | ||
| integration-test | ||
| post-integration-test | ||
| verify | ||
| install | install:install | |
| deploy | deploy:deploy | 
Site Lifecycle
| pre-site | ||
| site | 生成网站文档 | site:site | 
| post-site | ||
| site-deploy | site:deploy | 
具体可以查看maven-core-3.2.5.jar\META-INF\plexus中的三个xml
Maven默认周期与插件的更多相关文章
- maven生命周期和插件
		maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ... 
- [maven] 生命周期和插件
		maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ... 
- 05 Maven 生命周期和插件
		Maven 生命周期和插件 除了坐标.依赖以及仓库之外, Maven 另外两个核心概念是生命周期和插件.在有关 Maven 的日常使用中,命令行的输入往往就对应了生命周期,如 mvn package ... 
- maven生命周期与插件
		目录 Maven生命周期 clean default site 命令与对应周期 插件与绑定 插件目标 插件绑定 内置绑定 自定义绑定 插件配置 本文主要是针对<maven实战>书中关键知识 ... 
- MAVEN学习笔记之Maven生命周期和插件简介(3)
		MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ... 
- Maven系列学习(三)Maven生命周期和插件
		Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ... 
- (十二)Maven生命周期和插件
		除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期和插件.在有关Maven的日常使用中,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段packag ... 
- Maven生命周期和插件机制
		Maven中的一个非常重要的概念是生命周期和插件,这篇文章重点介绍下Maven的生命周期. Maven的生命周期是抽象的,具体的功能是有具体的插件来完成的,Maven有相当多的功能插件,以至于Mave ... 
- Maven生命周期(插件)
		maven拥有三套相互独立的生命周期,它们分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site 生命周期的目的是建立项目站 ... 
随机推荐
- 使用git建立本地仓储管理代码【转】
			转自:http://blog.csdn.net/airk000/article/details/7738231 Git是Linus大神的代码管理工具,简直说是开发者的超级福音,而作为屌丝的个人开发者, ... 
- 自定义Eclipse的 “宏命令”
			在Eclipse中有些常用的固定的东西可以定义一个“宏命令”,就不用重复地做一些工作.就像在 Preferences > Java > Code Style > Code Templ ... 
- 《c程序设计语言》读书笔记--统计换行数,空格数,tab数
			#include <stdio.h> int main() { int spa = 0,lin = 0,tab = 0; int c; /* spa代表空格个数,tab代表制表符个数,li ... 
- 4.cadence原理图,环境设置[原创]
			1.菜单介绍 创建工程,原理图纸 特殊点: 鼠标先点击1,,在选中1后点击2 在Tools菜单下 Annotate:自动编号 back Annotate: 回标 -- DRC规则检测 Create N ... 
- 深入理解Java对象的序列化与反序列化的应用
			当两个进程在进行远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都会以二进制序列的形式在网络上传送.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收方则需要把字节序列再 ... 
- jquery.datatable插件从数据库读取数据
			一.分页 分页的基本思想是根据datatable的页码及每页显示的行数,将数据从数据库分段提出,然后再填充到表格中,以达到分页的效果. 这里需要用到datatable插件的几个属性: "sE ... 
- Qt之命令行编译(nmake)
			简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ... 
- highCharts入门-强大的图表库插件
			简介 Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业 ... 
- Sublime安装插件的方法
			一:打开:工具--命令面板 二:输入:package,,选择下拉列表里提示的install package 三:输入需要安装的插件的名称,如:angularJS Less sass 回车即可安装, ... 
- windows 勾子简介
			近段时间因朋友催促让试着写一个监控系统,主要是用来管理孩子使用电脑,帮助孩子合理使用电脑.在网上查询了相关内容发现没有这方面的资料,所以只有自已来试试,要用到钩子来对windows应用程序进行监控,也 ... 
 
			
		 
  
 