Maven
简介
maven是一款服务于基于java平台的项目构建、依赖管理工具。
依赖仓库地址
https://mvnrepository.com/tags/maven
maven的四大特性
依赖管理系统
maven如果是父子工程的话会有继承的特性,并且还可以在父工程统一管理依赖版本。
Maven引入了依赖管理系统jar包管理 jar升级时修改配置文件即可。
依赖的三大属性:groupld、artifactld、version 这三大属性组成了 Coordination (坐标) 唯一标识一个依赖。
任何基于Maven构建的项目自身也必须定义这三项属性,生成的可以是j ar 包,也可以是 war 包,一个典型的依赖引用如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
groupld:表明Meven项目隶属实际项目-公司名称
artifactId:该元素定义实际项目中的一个 Maven模块-项目名
version:该元素定义Maven项目的版本
坐标属性
maven坐标为各种组件引入了秩序,任何一个组件都必须定义自己的坐标。
Maven的特点:
- 一致的项目结构:解决了不同ide带来的文件目录不一致的问题(例如Idea的maven项目导入eclipce里同样可以,因为项目结构统一)。
- 一致的构建模型以及插件机制:引入插件(如:需要Tomcat,那么就把Tomcat的插件引入就可以了)
Maven的理念:约定大于配置!
Maven的安装配置
下载maven
地址就不贴了,直接去官网下载吧。
配置环境变量
解压后把Maven的根目录配置到系统环境变量中MAVEN_HOME,将bin目录配置到path环境变量中。
path中的环境变量:
注意:maven解压后存放的目录不要包含中文和空格
检查Maven环境:dos窗口输入 mvn -v
修改配置文件修改镜像
- 在maven目录下创建maven-repo文件夹,用作maven本地仓库,存放maven下载下来的jar包
F:\apache-maven-3.6.1\maven-repo
- 打开maven路径下的配置文件:maven目录/conf/settings.xml
- 添加本地仓库位置配置:如下
路径是刚刚创建的那个本仓库路径
<localRepository>F:\apache-maven-3.6.1\maven-repo</localRepository>
- 在 mirrors 标签中更换镜像为阿里的镜像,加快依赖下载,因为maven默认使用的是国外的中央仓库,很慢:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
pom.xml 标签解释:
modelversion:指定了当前pom模型的版本,对于Maven2和Maven3来说,它只能是4.0.0
groupId:顾名思义,就是定义了项目属于哪个组,这个组往往和项目所在的组织和公司存在关联,例如com.xxxx
artifactId:定义了当前Maven项目在组中的唯一Id
version:x.x.x - 里程碑
例如:1.0.0-SNAPSHOT
第一个x :大版本 有重大变革
第二个x:小版本 修复bug,增加功能
第三个x:更新
里程碑版本:
SNAPSHOT(开发版)
alpha(内部测试)
beta (公开测试)
Release | Rc (发布版)
GA(正常版本)
常用命令
- mvn -version:显示版本信息
- mvn clean:清理项目产生的临时文件,一般是模块下的target目录
- mvn compile:编译源代码,一般编译模块下的sec/main/java目录
- mvn package:项目打包工具,会在模块下的target目录下生成jar或war文件
- mvn test:测试命令,或执行src/test/java/下的junit测试用例
- mvn install:将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
- mvn site:生成项目相关信息的网站
- mvn eclipse:eclipse:将项目转化为Eclipse项目
- mvn dependency:tree:打印出项目的整个依赖树
IDEA集成Maven环境
设置Maven版本
Maven 的 Web 项目的创建
- 创建maven的webapp项目
- 项目gav:
- 初始项目结构如图
- 修改pom.xml配置文件
- 修改jdk版本:默认为1.7,修改为1.8 如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
还可以使用maven编译插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source> <!-- 源代码使用的JDK版本 -->
<target>1.8</target> <!-- 需要生成的目标class文件的编译版本 -->
<encoding>UTF-8</encoding><!-- 字符集编码 -->
</configuration>
</plugin>
</plugins>
</build>
- junit如果不需要可以删除
- 删除pluginManagement标签及标签内的所有内容
- Maven集成Tomcat
第一步:
<plugins>
集成Tomcat9插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--访问端口-->
<port>8080</port>
<!--对外访问路径-->
<path>/mavenDemo</path>
<uriEncoding>UTF-8</uriEncoding>
<server>tomcat7</server>
</configuration>
</plugin>
</plugins>
第二步:
1.
2.
Maven仓库概念
Maven仓库分为两类:本地仓库和远程仓库。
当Maven根据坐标寻找构件的时候,会首先查看本地仓库,有就直接使用,如果本地仓库没有,则会从远程仓库查找下载到本地仓库,如果本地仓库和远程仓库都没有的话,Maven就会报错。
远程仓库分为三种:中央仓库、私服、其他公共库。
默认配置下,Maven使用中央仓库下载jar包。
私服是另外一种特殊的远程仓库,是为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用这个仓库代理所有外部远程仓库。内部的项目还能上传到私服上供其他项目使用
如果没有自己配置本地仓库文件夹时,默认本地仓库在路径为:${User}/.m2/repository/。建议修改配置为自己创建的本地仓库文件夹。配置方式前面已经有说了。