- 清理
将以前编译得到的旧的class字节码文件删除,为下一次编译做准备 - 编译
将java源程序变异成class字节码文件 - 测试
自动测试,自动调用junit程序 - 报告
测试程序执行的结果 - 打包
动态web工程打war包,java工程打jar包 - 安装
maven特定的概念—将打包的道德文件复制到仓库中的特定位子 - 部署
将动态web工程生成的war包复制到Servlet容器的制定根目录下,使其运行。
maven的核心概念
- 约定的目录结构
- POM
- pom.xml对于maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。重要的程度相当于web.xml杜宇动态web工程
- 坐标
- groupId:公司活组织域名的倒写加上项目名
<groupid>com.milkandtea.MavenDemo</groupid>
- artifactid:模块名
<artifactid>Hello</artifactid>
- version:版本号
<version>1.0.0</version>
- 依赖
- maven解析依赖信息时会到本地仓库中国查找被依赖的jar包
- 依赖的范围
- compile
- 对主程序是否有效:有效
- 对测试程序是否有效:有效
- 是否参与打包 :参与
- test
- 对主程序是否有效:无效
- 对测试程序是否有效:有效
- 是否参与打包:不参与
- 典型例子:junit
- provided
- 对主程序是否有效:有效
- 对测试程序是否有效:有效
- 是否参与打包:不参与
- 是否参与部署:不参与
- 典型的例子:servlet-api.jar
- compile
- 仓库
- 本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有的maven工程服务
- 远程仓库:
- 私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务
- 中央仓库:架设在Internet上,为全世界所有的maven工程服务
- 中央仓库镜像:为了分担中央仓库的流量,提升用户访问速度
- 仓库中保存的内容:Maven工程
- Maven自身所需要的的插件
- 第三方框架或者工具的jar包
- 我们自己开发的maven工程
- 生命周期/插件/目标
- 各个构建环节执行的顺序:不能打乱顺序,必须按照既定的顺序来执行
- maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的。
- maven的核心程序为了更好地实现自动化构建,按照这一特点执行生命中其中的各个阶段:不论现在要执行的生命周期中的哪一个阶段,都是这个生命周期最初始的位置开始执行。
- 继承
- 结合
常用的maven命令
- 注意:执行与构建过程相关的maven敏玲,必须进入到pom.xml所在的目录中,与构建过程相关过程关系:编译,测试,打包,部署等
- 常用命令
命令 | 描述 |
---|---|
mvn -version | 显示版本信息 |
mvn clean | 清理项目产生的临时文件,一般是模块下的target目录 |
mvn compile | 编译源代码,一般编译模块下的src/main/java目录 |
mvn package | 项目打包工具,会在模块下的target目录下生成jar或者war文件 |
mvn test | 测试命令,执行src/text/java下的junit测试用例 |
mvn install | 将打包的jar或者war文件复制到你的本地仓库中,供其他模块使用 |
mvn deploy | 将打包的文件发布到远程参考,提供其他人员下载 |
mvn site | 生成项目信息相关的网站 |
mvn eclipse:eclipse | 将项目转换成eclipse项目 |
mvn dependency:tree | 打印出整个项目的依赖树 |
mvn archetype:generate | 创建maven的普通java项目 |
mvn tomcat7:run | 在tomcat容器中运行web应用 |
mvn jetty:run | 调用jetty插件的Run目标在jetty Servlet容器中启动web应用 |
更改maven的本地仓库地址
在conf文件下的settings.xml文件中找到localRepository
<localRepository>E:/maven/repository</localRepository>
更改中央仓库中的url,使得下载相关依赖更快
在conf文件下的settings.xml文件中找到 mirrors标签
添加阿里云镜像
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
maven配置相关插件
在build>plugins下面进行配置,下面的是jetty插件的配置
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.11.v20150529</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/abc</contextPath>
</webApp>
<!-- <connectors>-->
<!-- <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">-->
<!-- <port>8888</port>-->
<!-- </connector>-->
<!-- </connectors>-->
</configuration>
</plugin>
jetty:run
这里是tomcat插件的配置
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/abc</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
tomcat:run
maven打包项目步骤
首先在pom.xml文件中配置打包环境
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<!-- 未指定环境时,默认打包dev环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
</profile>
</profiles>
在build配置resources
```java
<resources>
<resource>
<directory>src/main/resources/${dev}}</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
然后再右上角设置打包那个环境
package//普通的编译
clean compile package -Pdev -Dmaven.dev.skip=true//打包开发版本
clean compile package -Ptest -Dmaven.test.skip=true//打包测试版本
clean compile package -Pproduct -Dmaven.product.skip=true//打包正时版本