1、Maven搜索工具
http://mvn.coderead.cn/
或者搜 maven中央仓库
maven仓库:https://mvnrepository.com/
2、Maven
- Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
- 官网:maven.apache.org/
- 作用:方便依赖管理、统一的项目结构、标准的项目构架流程
3、安装
- 下载地址:maven.apache.rog/download.cg… >>> apache-maven-3.6.1-bin.zip
-
安装步骤:
- 1、解压 apache-maven-3.6.1-bin.zip 到指定目录
- 2、配置本地仓库:修改 conf/settings.xml 中的
<localRepository>D:\TOOL2\apache-maven-3.9.6-bin\repository</localRepository> - 3、配置阿里云私服:修改 conf/settings.xml 中的
mirror标签,为其添加如下子标签: -
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> - 4、配置环境变量 M_HOME 为maven的解压目录,并配置path环境变量
4、环境变量
配置如下:
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven 的目录
- 在系统的path中配置 %MAVEN_HOME%\bin
5、IDEA配置Maven环境
- 点击 IDEA 中的 File > Settings > Build,Execution,Deployment > Build Tool > Maven
- 设置 Idea 中使用本地安装的 Maven,并修改配置文件及本地仓库路径
6、配置Maven全局环境
File > close Project > Customize > All settings > Build,Execution,Deployment > Build Tool > Maven
然后重复以上配置。
7、Pom.xml
生成Maven项目之后,项目目录下会有一个 Pom.xml 文件,用来管理项目依赖。
8、Maven 坐标
- Maven中的坐标是资源(jar)的唯一标识,通过该坐标可以定位唯一的资源位置
- 使用坐标来定义项目或引入项目中需要的依赖
Maven坐标组成:
-
groupId:定义当前Maven项目隶属组织名称(通常是公司域名反写,com.xxx)
-
artifactId:定义当前Maven项目名称(通常是模块名称,例如order-service)
-
version:定义当前项目版本号. SNAPSHOT中文是快照的意思,指的是正在开发的版本
-
示例:
-
<groupId>com.example</groupId> <artifactId>JUC</artifactId> <version>1.0-SNAPSHOT</version>
-
9、依赖管理
依赖配置、依赖范围、声明周期
依赖配置:
-
指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
-
配置:
- 1、在 pom.xml 中编写
<dependencies>标签 - 2、在
<dependencies>标签内使用<dependency>引入坐标 - 3、定义坐标的 groupId, artifactId, version
- 4、idea右上角的Maven,点击刷新,引入最新加入的坐标(下载)
- 1、在 pom.xml 中编写
依赖传递: 依赖具有传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,则当前项目间接依赖其他资源
排除依赖:
- 指主动断开依赖的资源,被排除的依赖无需指定版本。
-
<dependencies> <dependency> <groupId>org.dom4j</groupId> // 假设这个是引入其他的项目 <artifactId>dom4j</artifactId> <version>2.1.3</version> <!-- 排除依赖的标签 --> <exclusions> <exclusion> <groupId>junit</groupId> // 这个就是排除其他项目资源里的 junit <artifactId>junit</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
依赖范围:
依赖的jar包,默认情况下,可以在任何地方使用(main和test)。可以通过 <scope>...</scope>设置其作用范围。
作用范围:
- 主程序范围 mian文件夹范围内
- 测试程序范围 test文件夹范围内
- 是否参与打包运行 package指令范围内
Maven生命周期:
简单包含这几个:
- clean:移除上一次构建生成的文件
- compile:编译项目源码
- test:使用合适的单元测试框架试运行测试(junit)
- package:将编译后的文件打包,如:jar,war等
- install:安装项目到本地仓库
10、构建默认编码
在 pom.xml 文件中
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
11、导出失效问题
maven由于它的约定大于配置,之后可能遇到我们写的配置文件,无法被导出或者生效的问题
比如:我们写的资源文件 xx.properties 不在resources目录下,导致无法被构建。
解决方案:
<!--在build中配置resources,来防止我们资源导出失败的问题 -->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>***/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>