java项目构建工具
方便快速完成分布式开发
方便完成项目的依赖管理
解压后配置环境变量
存放maven项目的目录(文件夹)
本地仓库
默认位置:C:\Users\Administrator.m2\repository
本机上用于存放maven项目的目录,服务于本机所有maven项目
远程仓库
中央仓库
maven官方提供,服务器架设在国外,服务于全世界所有maven项目
中央仓库镜像
服务器架设在某一个区域内,服务区域内所有maven项目
私服
架设在局域网内的maven服务器,服务于当前局域网内所有的maven项目;
- <localRepository>目录地址localRepository>
- <mirrors>
- <mirror>
- <id>aliyun-publicid>
- <mirrorOf>*mirrorOf>
- <name>aliyun publicname>
- <url>https://maven.aliyun.com/repository/publicurl>
- mirror>
- <mirror>
- <id>aliyun-centralid>
- <mirrorOf>*mirrorOf>
- <name>aliyun centralname>
- <url>https://maven.aliyun.com/repository/centralurl>
- mirror>
- <mirror>
- <id>aliyun-springid>
- <mirrorOf>*mirrorOf>
- <name>aliyun springname>
- <url>https://maven.aliyun.com/repository/springurl>
- mirror>
- <mirror>
- <id>aliyun-spring-pluginid>
- <mirrorOf>*mirrorOf>
- <name>aliyun spring-pluginname>
- <url>https://maven.aliyun.com/repository/spring-pluginurl>
- mirror>
- <mirror>
- <id>aliyun-apache-snapshotsid>
- <mirrorOf>*mirrorOf>
- <name>aliyun apache-snapshotsname>
- <url>https://maven.aliyun.com/repository/apache-snapshotsurl>
- mirror>
- <mirror>
- <id>aliyun-googleid>
- <mirrorOf>*mirrorOf>
- <name>aliyun googlename>
- <url>https://maven.aliyun.com/repository/googleurl>
- mirror>
- <mirror>
- <id>aliyun-gradle-pluginid>
- <mirrorOf>*mirrorOf>
- <name>aliyun gradle-pluginname>
- <url>https://maven.aliyun.com/repository/gradle-pluginurl>
- mirror>
- <mirror>
- <id>aliyun-jcenterid>
- <mirrorOf>*mirrorOf>
- <name>aliyun jcentername>
- <url>https://maven.aliyun.com/repository/jcenterurl>
- mirror>
- <mirror>
- <id>aliyun-releasesid>
- <mirrorOf>*mirrorOf>
- <name>aliyun releasesname>
- <url>https://maven.aliyun.com/repository/releasesurl>
- mirror>
- <mirror>
- <id>aliyun-snapshotsid>
- <mirrorOf>*mirrorOf>
- <name>aliyun snapshotsname>
- <url>https://maven.aliyun.com/repository/snapshotsurl>
- mirror>
- <mirror>
- <id>aliyun-grails-coreid>
- <mirrorOf>*mirrorOf>
- <name>aliyun grails-corename>
- <url>https://maven.aliyun.com/repository/grails-coreurl>
- mirror>
- <mirror>
- <id>aliyun-mapr-publicid>
- <mirrorOf>*mirrorOf>
- <name>aliyun mapr-publicname>
- <url>https://maven.aliyun.com/repository/mapr-publicurl>
- mirror>
- mirrors>
定位项目在maven仓库位置
groupId:配置项目所属公司或组织的域名(倒写)
artifactId:配置项目名称
version:配置项目版本
maven有三套相互独立的生命周期,每套都包含了生命周期指令
执行清理工作
mvn pre-clean:执行清理工作之前执行的指令
mvn clean:清理前一次编译结果💥
mvn post-clean:执行清理工作之后执行的指令
不管执行生命周期的哪个阶段,都从当前生命周期最初位置开始执行
核心maven会完成编译、测试、打包、安装、部署等工作;
mvn compile:编译💥
mvn test:测试
mvn package:打包💥
mvn install:安装💥
mvn depoly:部署
生成站点信息(了解)
mvn site:生成当前项目站点信息
标签引入外部依赖
子标签
配置引入maven项目的坐标信息
- <dependencies>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.5.6version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>5.1.45version>
- dependency>
- dependencies>
某个项目依赖了外部依赖又被其他项目所依赖,该项目依赖的外部依赖可传递到其他项目
子标签
:用于设置当前引入的外部依赖的作用范围,常用的取值有:
compile:表示依赖具备传递性(默认值)
test:表示依赖仅参与测试阶段,此时依赖不具备传递性(引入单元测试junit,取值就是test)
provided:表示依赖仅参与编译阶段,不参与打包部署,不具备传递性(引入servlet-api依赖,scope必须取成provided)
runtime:表示依赖会参与到运行阶段中(引入数据库驱动(mysql-connector-java),取值就是runtime)
项目中有多个相同依赖传递到本项目中,路径最短者优先;
路径相同时,先配置者优先;
- <exclusions>
- <exclusion>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- exclusion>
- exclusions>
maven的继承是maven项目之间的继承,一定需要有一个父项目,子项目才可以去完成继承动作
maven的父项目是通过pom.xml中的
标签设置
标签用于设置maven项目的打包形式:
jar:表示将当前项目打成jar包
war:表示将当前项目打成war包
pom:表示当前项目是一个父项目,如果设置为pom之后,当前项目进行编译或打包、安装、部署等操作时,不会对src目录进行任何操作(可以删除src目录)
实现步骤
创建父项目
<packaging>pompackaging>
创建子项目,继承父项目
- <parent>
- <groupId>com.woniuxygroupId>
- <artifactId>parentartifactId>
- <version>1.0-SNAPSHOTversion>
- parent>
maven继承中,父项目与子项目的关联性很弱,对父项目进行任何操作,子项目不会跟着发生变化
maven聚合是建立在继承基础上。实现聚合,要在父项目中通过
标签将子项目包含进来,此时父项目中执行操作,子项目会跟着执行相应操作
实现步骤:
在父项目中通过
标签将子项目包含
- <modules>
- <module>MyShop_Commonsmodule>
- <module>MyShop_Daomodule>
- <module>MyShop_Servicemodule>
- <module>MyShop_Webmodule>
- modules>
在子项目的
标签中使用
标签指向父项目的pom.xml
- <parent>
- <groupId>com.woniuxygroupId>
- <artifactId>parent1artifactId>
- <version>1.0-SNAPSHOTversion>
-
- <relativePath>../parent1/pom.xmlrelativePath>
- parent>
父项目集中管理依赖版本
在父项目的pom.xml中可以通过
声明依赖
注意:
此时依赖不会实际引入,在子项目中按需去加载所需依赖,一定不要加
子标签
由于父项目中管理的依赖过多,导致查询相关依赖版本时比较难找,可直接在
标签中自定义版本标签
父项目
- <properties>
- <mybatis.version>3.5.6mybatis.version>
- properties>
- <dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>${mybatis.version}version>
- dependency>
- dependencies>
- dependencyManagement>
子项目
- <dependencies>
-
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- dependency>
- dependencies>