仓库
Local Repository - 本地库
存放在本地计算机的仓库
Central Repository - 中央库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
Remote Repository - 远程库
中央仓库 类似于github
Maven搜索依赖项时,会按照:本地库、中央库和远程库的顺序进行。
1、http://mvnrepository.com/
2、https://repo.maven.apache.org/maven2阿里中央仓库 <repository> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </repository>
maven.apache.org 中央仓库 <repository> <id>central-repos</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </repository>
spring.io 中央仓库 <repository> <id>springsource-repos</id> <name>SpringSource Repository</name> <url>http://repo.spring.io/release/</url> </repository>
项目目录
- pom.xml maven配置文件
- settings文件 全局配置
安装的地方:${M2_HOME}/conf/settings.xml用户的目录:${user.home}/.m2/settings.xml
pom.xml
groupId:当前Maven构件隶属的组织名 org、com、cn 等,其中 org 为非营利组织,com 为商业组织,cn 表示中国。
artifactId:项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。(必须)
version:当前版本。(必须)
packaging:打包方式,比如 jar,war... (必须)
classifier:classifier通常用于区分从同一POM构建的具有不同内容的构件。它是可选的,它可以是任意的字符串,附加在版本号之后。
<dependencies>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.2</version>
<classifier>jdk15</classifier>
</dependency>
</dependencies>
依赖冲突
- 第一原则:路径最近者优先
- 第一声明者优先
解决冲突
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<!-- 剔除依赖 -->
<exclusions>
<exclusion>
<groupId>org.glassfish.hk2.external</groupId>
<artifactId>jakarta.inject</artifactId>
</exclusion>
...
</exclusions>
</dependency>
其他
- properties 特殊属性定义,一般是版本号 可以调用
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<mysql.version>5.1.6</mysql.version>
<mybatis.version>3.4.5</mybatis.version>
<aspectjweaver.version>1.6.8</aspectjweaver.version>
<junit.version>4.12</junit.version>
<jsp-api.version>2.0</jsp-api.version>
<servlet-api.version>2.5</servlet-api.version>
<jstl.version>1.2</jstl.version>
<mybatis-spring.version>1.3.0</mybatis-spring.version>
<druid.version>1.0.9</druid.version>
<!--文件的编码格式-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
dependencyManagement 管理依赖
distributionManagement 部署构件至远程仓库
<distributionManagement>
<repository> <id>releases</id> <name>public</name> <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Snapshots</name> <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url> </snapshotRepository></distributionManagement>
maven常用命令
mvn clean:表示运行清理操作(会默认把target文件夹中的数据清理)。
mvn clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。
mvn clean test:运行清理和测试。
mvn clean package:运行清理和打包。
mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。
mvn clean deploy:运行清理和发布(发布到私服上面)。maven生命周期
- clean清理项目
- defult(build):构建项目
- site:生成项目