命令及解释
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 还有war、zip、pom
--> <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依赖b,b依赖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