我是一个要做程序员的男人。有问题可以随时联系我。
- 1、maven快速入门
- 2、maven核心知识
- 3、maven建立web项目
1、Maven快速入门
1.1 maven介绍及环境搭建
maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
在apache官网下载maven安装包。
下载地址:https://maven.apache.org/download.cgi
目录结构如下:
- bin/
- boot/
- conf/
- lib/
将当前的bin目录设为环境变量
此时maven安装成功
1.2 maven目录结构
pom.xml说明
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--项目包名-->
<groupId>com.imooc.maven01</groupId>
<!-- 模块名-->
<artifactId>maven01-model</artifactId>
<!-- 版本-->
<version>0.0.1SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>
mvn compile 项目编译命令
mvn test 运行测试用力
执行完成测试后,得到一个target目录
classes ------------------ 项目字节码文件
maven-status ------------
surefire-reports ----------- 测试报告
test-classes --------------- 测试字节码文件
mvn package 打包,将项目打包成一个jar包
jar包名字由 模块名-版本名
2、Maven核心知识
2.1 maven基础知识
常用命令
mvn -v 查看版本
mvn compile 编译
mvn test 测试
mvn package 打包
mvn clean 删除target
mvn install 安装jar包到本地仓库
在此对mvn install进行说明,将项目发布到本地仓库,若有其他项目需要使用的时候直接在pom.xml中添加项目依赖,可以将该jar包加入使用
2.2 maven自动创建目录骨架
archetype插件用于创建maven规定的目录骨架
运行命令 mvn archetype:generate 进行构建目录骨架
输入以上的命令,在最后会要求输入 groupId artifactId version package
mvn archetype:generate -DgroupId:com.xxx.xxx -DartifactId=maven-demo -Dversion=1.0.0SNAPSHOT -Dpackage=com.xxx.xxx.maven-demo
2.3 maven中的坐标与仓库
在maven中任何一个依赖、插件项目输出可以认为是一个构件
构件通过坐标作为其唯一的标识
groupId artifactId version 构成唯一的坐标
仓库用来管理项目依赖的,仓库分为本地仓库和远程仓库
远程仓库在lib/maven-model-builder-3.5.0.jar中的pom-4.0.0.xml,这是一个超级的pom所有都会继承此
<!--可以打开看到一个中央仓库地址-->
<repositories>
<repository>
<id>central</id> <!--中央仓库唯一标识-->
<name>Central Repository</name> <!--中央仓库名称-->
<url>https://repo.maven.apache.org/maven2</url> <!--中央仓库地址-->
<layout>default</layout> <--默认地址-->
<snapshots>
<enabled>false</enabled> <--禁止下载快照-->
</snapshots>
</repository>
</repositories>
镜像仓库,为了防止下载国外的比较慢
conf/settings.xml中找到<mirrors>标签添加
<!--以下只是例子-->
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
更改仓库位置
默认在当前用户的.m2目录中,mvn install发布的jar包也在此
找到conf/settings.xml中找到<localRepository>标签中,修改路径
<localRepository>/path/to/local/repo</localRepository>
2.4 maven的生命周期与插件
1、完成的项目构建过程过程:
clean、compile、test、package、install
清理、编译、测试、打包、集成测试、验证、部署
2、maven声明周期
clen 清理项目
- pre-clean 执行清理前的工作
- clean清理上一次构建生成的所有文件
- post-clean 执行清理后的文件
default 构建项目(最核心)
- compile test package install 都属于此
site 生成项目站点
- pre-site 在生成项目站点前要完成的工作
- site 生成项目的站点文档
- post-site 在生成项目站点后要完成的工作
- site-deploy 发布生成的站点到服务器上
3、插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase> <!--执行阶段-->
<goals>
<goal>jar-no-fork</goal> <!--执行目标-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.5 pom.xml常用元素介绍
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<!--指定当前的pom版本-->
<modelVersion>4.0.0</modelVersion>
<!--包名=反写公司网址+项目名-->
<groupId></groupId>
<!--项目名+模块名-->
<artifactId></artifactId>
<!--
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
0.0.1
snapshot快照
alpha内部测试
beta公测
Release稳定
GA正式版本
-->
<version>0.0.1SNAPSHOT</version>
<!--默认jar
其他war zip pom
-->
<packaging></packaging>
<!--项目描述名-->
<name></name>
<!--项目地址-->
<url></url>
<!--项目描述-->
<description></description>
<!--开发人员信息-->
<developers></developers>
<!--许可证信息,开源框架-->
<licenses></licenses>
<!--组织信息-->
<organization></organization>
<!--继承的父模块-->
<parent></parent>
<!--指定多个模块进行编译-->
<modules>
<module></module>
</modules>
<!--依赖列表-->
<dependencies>
<!--依赖项-->
<dependency>
<!--三个坐标-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<type></type>
<!--依赖范围-->
<scope>test</scope>
<!--设置依赖是否可选 true false-->
<optional></optional>
<!--排除依赖列表-->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!--通常在父模块中使用-->
<dependencyManagement>
<dependencies>
<dependency>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!--插件列表-->
<plugins>
<plugin>
<!--坐标-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase> <!--执行阶段-->
<goals>
<goal>jar-no-fork</goal> <!--执行目标-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.6 maven依赖范围
三种classpath:编译、测试、运行
test表示只存在于测试的classpath
<scope></scope>
中共有6中范围
compile:默认范围,编译测试运行都有效
provided:在编译和测试时有效
runtime:在测试和运行时有效
test:在测试有效
system:与本机系统相关联,可移植性差
import :导入的范围,只使用在dependencyManagement中,表示从其他的pom中导入的dependecy的配置
2.7maven依赖冲突
1、短路优先,优先解析短的版本
A->B->C->X(jar)
A->D->X(jar) 解析该版本
2、路径一致情况下,先声明先优先
2.8maven聚合和继承
对父pom.xml而言需要设置<packaging>pom</packaging>
<modeules>
..加入至模块的信息
<modeules>
对子模块而言需要设置
<parent>
...加入父的坐标
</parent>