本章是整理知识内容,为强化知识长期更新。
Mavan常用命令以及用法
- 常用命令就要先了解Maven的生命周期
- Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
- Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。所以必须有对应的插件才能执行对于的步骤。
- Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
- clean生命周期:清理项目,包含三个phase。
- 1.)pre-clean:执行清理前需要完成的工作。
- 2)clean:清理上一次构建生成的文件。
- 3)post-clean:执行清理后需要完成的工作。
- default生命周期:构建项目,重要的phase如下。
- 1)validate:验证工程是否正确,所有需要的资源是否可用。
- 2)compile:编译项目的源代码。
- 3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
- 4)Package:把已编译的代码打包成可发布的格式,比如jar。
- 5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
- 6)verify:运行所有检查,验证包是否有效且达到质量标准。
- 7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
- 8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
- site生命周期:建立和发布项目站点,phase如下。
- 1)pre-site:生成项目站点之前需要完成的工作。
- 2)site:生成项目站点文档。
- 3)post-site:生成项目站点之后需要完成的工作。
- 4)site-deploy:将项目站点发布到服务器
- clean生命周期:清理项目,包含三个phase。
mvn clean
- 清理项目构建文件。调用clean生命周期的clean阶段,实际执行pre-clean和clean阶段。
mvn install
- 构建项目文件。实际执行pre-clean和clean,install以及之前所有阶段。
mvn install -Dmaven.test.skip=true
构建项目的时候不执行测试。也可以使用插件来配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<!-- surefire 插件用来在maven构建生命周期的test phase执行一个应用的单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>true</skipTests>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
<!-- 插件手动匹配JUnit 目前是使用4.10的版本-->
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.19.1</version>
</dependency>
</dependencies>
</plugin>
mvn eclipse:eclipse
- 将pom项目转换成eclipse格式项目。
mvn jetty:run -war
使用内置jetty启动项目,需要配置jetty扩展插件。也可以使用tomcat来作为插件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29<!-- 配置Maven插件(mvn jetty:run -war可以运行项目) -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.0.M1</version>
<configuration>
<!-- 指定访问端口 -->
<httpConnector>
<port>80</port>
</httpConnector>
<!-- 间隔x扫描一次,实现热部署
<scanIntervalSeconds>0</scanIntervalSeconds>
-->
<!-- 编写类文件之后,是否自动重启jetty;可选后面两个值[manual|automatic]
<reload>manual</reload>
-->
<!-- 指定关闭端口 -->
<stopPort>9998</stopPort>
<stopKey>stop-jetty</stopKey>
<webApp>
<!-- 配置<contextPath>/</contextPath>,则访问路径为http://localhost:80 -->
<contextPath>/</contextPath>
<!-- 更改jetty默认webdefault.xml文件,主要修改了useFileMappedBuffer属性为false,使其不锁定静态文件 -->
<!-- 此文件在C盘\用户目录\.m2\repository\org\eclipse\jetty\jetty-webapp\9.1.0.RC1\找到jar包,打开jar包目录org\eclipse\jetty\webapp\目录中 -->
<!-- <defaultsDescriptor>webdefault.xml</defaultsDescriptor> -->
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webApp>
</configuration>
</plugin>
插件Git Version
1 | <!-- Git Version插件 --> |
- 插件将会在每次构建时生成一个版本相关文件