Maven学习笔记

命令及解释

mvn -v 查看maven版本

mvn compile 编译

mvn test 测试

mvn package 打包

 

mvn clean 删除target

mvn install 安装jar包到本地仓库

 

创建工程目录时使用archetype插件,两种方式创建

 

1、mvn  archetype:generate 按照提示进行选择

      注意:版本选择1.1

                 项目版本号输入1.0.0SNAPSHOT

2、mvn archetype:generate -DgroupId=公司项目反写+项目名

                                             -DartifactId=项目模块名

                                             -Dversion=版本号

                                             -Dpackage=代码所存在的包名

坐标

      构件

仓库

     本地仓库和远程仓库

镜像仓库     

完整的项目构件过程包括:

清理、编译、测试、打包、集成测试、验证、部署

maven将上面的额过程进行了抽象

clean compile test package install

maven生命周期:

clean 清理项目

default 构成项目

site 生成项目站点

 

clean清理项目

  pre-clean 执行清理前 的工作

  clean清理上一次构建的生成的所有文件

default构建项目(最核心)

  compile  test  package  install

site

 

 

 
POM文件解析
<!--指定约束-->
<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">

<!--指定了父项目的信息-->
<parent>
<artifactId>exam</artifactId>
<groupId>com.qunar.fresh2017.exam</groupId>
<version>1.0-SNAPSHOT</version>
</parent>

<!--指定多个模块,进行一起编译-->
<!--<modules>
<module>

</module>
</modules>-->


<!--指定当前pom的版本-->
<modelVersion>4.0.0</modelVersion>
<!--坐标信息,定义当前模块的标示-->
<artifactId>Mybatis_ZhangRuihao</artifactId>
<!--
默认打包方式是jar
还有warzippom

-->
<packaging>war</packaging>
<!--
一般由三个数字组成
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号

一般形式:0.0.1SNAPSHOT
SNAPSHOT快照
alpha内部测试
beta公测
Release稳定
GA正式版本

<version>版本号</version>
-->
<!--项目描述名-->
<name>Mybatis_ZhangRuihao Maven Webapp</name>

<!--项目地址-->
<url>http://maven.apache.org</url>

<!--
项目描述
<description></description>
-->
<!--
开发人员信息
<developer></developer>
-->
<!--
许可证信息
<licenses></licenses>
-->
<!--
组织信息
<organization></organization>
-->

<!--
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope> 指明只在测试文件夹下有用
<optional></optional> 设置依赖是否可选,默认是false,如果是true,必须显示的引入该依赖
<exclusions> 排除依赖传递列表,比如a依赖bb依赖c,那么c对于a来说就是传递依赖,如果a不想依赖c,就可以使用这个标签
<exclusion>
</exclusion>
</exclusions>
</dependency>
-->

<!--并不会真正运行,用于定义在父模块中,让子模块继承用的--> <!-- <dependencyManagement> <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> </dependency> </dependencies> </dependencyManagement>--> <!--对构建行为提供相应的支持--> <build> <!--插件列表--> <!--<plugins> <plugin> <groupId></groupId> <artifactId></artifactId> <version></version> </plugin> </plugins>--> <finalName>Mybatis_ZhangRuihao</finalName> </build></project>
依赖范围 

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope> 指明只在测试文件夹下有用
</dependency>

Dependency Scope

compile :默认的范围,编译、测试、运行都有效

provided :在编译和测试时有效

runtime:在测试和运行时都有效

test:只在测试范围有效

system:与provided一样,在编译和测试时有效,不过它与系统相关联,可移植性差

import:导入的范围,它只使用在dependencyManagement中,表示从其它pom中导入dependency的配置

依赖冲突时有两条原则

1、短路优先

A->B->C→X(jar)

A->D->X(jar)

这时候A就引用下面的一个X

 

2、先声明先优先

如果路径长度相同,则谁先声明,先解析谁

Maven中Tomcat插件


<!-- 添加tomcat7-maven插件 -->

<build>
<finalName>spring</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
原文地址:https://www.cnblogs.com/haolnu/p/7359054.html