在项目根目录下,即pom.xml 所在目录,可以执行以下mvn 命令。我们用~/Desktop/MyProject/springboot这个项目来演示Maven 构建生命周期中用到的命令。
Maven 构建生命周期:
- validate(验证):验证项目是否正确且所有必须信息是否可用
- compile(编译):编译源代码
- Test(测试):使用适当的单元测试框架(例如JUnit)运行测试
- package(打包):根据pom.xml定义的<packaging>jar</packaging>来打包,创建JAR或WAR包。
- verify(检查):对集成测试的结果进行检查,以保证质量达标
- install(安装):安装打包的项目到本地仓库,以供其他项目使用
- deploy (部署):拷贝最终的工程包到远程仓库中,共享给其他开发人员和工程
1.执行一些需要在clean之前完成的工作
~/Desktop/MyMavenProj$ mvn pre-clean
2.移除所有上一次构建生成的文件
~/Desktop/MyMavenProj$ mvn clean
3.执行一些需要在clean之后立刻完成的工作
~/Desktop/MyMavenProj$ mvn post-clean
4.编译
~/Desktop/MyMavenProj$ mvn compile
5. 在开发环境中,使用下面的命令去构建、安装工程到本地仓库
~/Desktop/MyMavenProj$ mvn install
6. 在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中
~/Desktop/MyMavenProj$ mvn clean deploy
6.Maven Site 插件一般用来创建新的报告文档、部署站点等。
pre-site:执行一些需要在生成站点文档之前完成的工作
site:生成项目的站点文档
post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy:将生成的站点文档部署到特定的服务器上
7.mvn archetype:generate 创建Maven项目
~/Desktop/MyProject$ mvn -B archetype:generate \
> -DarchetypeGroupId=org.apache.maven.archetypes \
> -DgroupId=com.mycompany.app \
> -DartifactId=my-app
8.mvn compile 编译源代码
切换到 pom.xml所在目录
~/Desktop/MyProject/springboot$ ls
pom.xml springboot.iml src
~/Desktop/MyProject/springboot$ mvn compile
编译好的类放在 ${basedir}/target/classes
9.mvn deploy 发布项目
10.mvn test-compile 编译测试源代码
/Desktop/MyProject/springboot$ mvn test-compile
11.mvn test 运行应用程序中的单元测试
~/Desktop/MyProject/springboot$ mvn test
12.mvn site 生成项目相关信息的网站
~/Desktop/MyProject/springboot$ mvn site
13.mvn clean 清除项目目录中的生成结果
~/Desktop/MyProject/springboot$ mvn clean
14.mvn package 根据项目生成的jar
~/Desktop/MyProject/springboot$ mvn package
15.mvn install 在本地Repository中安装jar,包含mvn compile,mvn package,然后上传到本地仓库(${user.home}/.m2/repository)
~/Desktop/MyProject/springboot$ mvn install
16.mvn jetty:run 在jetty容器中运行工程
/usr/share/maven/conf/settings.xml没有配置jetty插件,可以这样来运行:
~/Desktop/MyProject/springboot$ mvn org.mortbay.jetty:maven-jetty-plugin:run
或在/usr/share/maven/conf/settings.xml上配置如下信息:
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
亦可以不在settings.xml上配置,直接在pom.xml上配置jetty插件,如:
或者在对应项目的pom.xml中的节点下添加配置
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<webApp>
<contextPath>/</contextPath>
</webApp>
<stopKey>webx</stopKey>
<stopPort>9999</stopPort>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8081</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
<filename>target/access.log</filename>
<retainDays>90</retainDays>
<append>false</append>
<extended>false</extended>
<logTimeZone>GMT+8:00</logTimeZone>
</requestLog>
<systemProperties>
<systemProperty>
<name>productionMode</name>
<value>${productionMode}</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
那么我们就可以用如下方式来执行。jetty:run直接使用源代码运行web程序,不将其打包成war文件。jetty插件会保证在运行前所有的类和资源都是最新的。如果你修改了代码,插件会自动重新部署。:
~/Desktop/MyProject/springboot$ mvn jetty:run
jetty:run-war会先将程序打包成war文件然后再将其部署。如果有代码修改,会重新打包war文件并部署。
17.mvn tomcat:run 在tomcat容器中运行工程
/Desktop/MyProject/springboot$ mvn tomcat:run