Maven总结一
Maven是什么
Maven是一个项目管理和综合工具。
- 提供了开发人员构建一个完整的生命周期框架。
- 使用标准的目录结构和默认构建生命周期。
- 可以设置按标准在非常短的时间里完成配置工作。
Maven的标准工程结构如下:
|-- pom.xml(maven的核心配置文件)
|-- src
|------main
|------------java(Java源代码目录)
|------------resource(资源文件目录)
|–test
|------------java(单元测试代码目录)
|–target(输出目录,所有的输出物都存放在这个目录下)
|----------classes(编译后的class文件存放处)
注:Maven的版本与JDK的版本相关联
一:Maven概述
1.1 Maven本地资源库:
Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。
当创建一个Maven项目,所有相关文件将被存储在Maven本地仓库。
默认情况下,Maven的本地资源库默认为.m2目录文件夹。
1.2 Maven远程资源库
当创建一个Maven项目时,Maven会检查setting.xml
,pom.xml
根据文件中配置便于确定那些需要从本地资源库加载,哪些需要从远程资源库(中央资源库)下载。
首先:Maven将从本地资源库获得Maven的本地资源库依赖资源,如果没找到;
然后:它会从默认的Maven中央存储库http://repo1.maven.org/maven2/
查找下载。
注:Maven中心储存库网站已改版本,目录浏览可能不再使用。这将直接被重定向到http://search.maven.org/
在Maven中,当声明的库不存在于本地存储库中,也不存在于Maven中心储存库,该过程将停止并将错误消息输出到Maven控制台。
1.3 Maven依赖库查找顺序:
当创建maven项目,它将依赖找不到失败并输出错误消息。
pom.xml
<repositories>
<repository>
<id>java.net</id>
<url>http://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
Maven依赖库查找顺序:
1》在Maven本地资源库中搜索,若未找到,进入第二步,否则退出;
2》在Maven中央存储库搜索,若未找到,进入第三步,否则退出;
3》在指定的远程存储库搜索,若未找到,提示错误信息,否则退出。
1.4 Maven私服
项目开发过程中所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件,加大了仓库的负载且浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库这时便需要搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是这个私服可以连接外网。
1.5 基于Maven全局设置
全局配置文件:settings.xml。
settings.xml文件位于Maven安装目录的conf目录下,或者在用户的Maven目录(通常是~/.m2/)下。这个文件可以配置Maven的全局行为,如远程仓库、代理设置、镜像等。
- localRepository: 定义本地仓库的路径,默认位于 ~/.m2/repository。
- interactiveMode: 指定 Maven 是否在交互模式下运行,true 表示允许提示输入信息。
- offline: 如果设置为 true,Maven 将在离线模式下运行,不会尝试访问网络。
- mirrors: 配置镜像仓库,用于替换 Maven 默认的中央仓库。
- servers: 配置服务器认证信息,如发布构件到远程仓库时需要的用户名和密码。
- proxies: 配置代理服务器信息,适用于需要代理访问网络的环境。
- profiles: 定义多个配置文件(Profiles),可以根据需要激活不同的配置。
- activeProfiles: 指定当前活跃的配置文件。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库位置 -->
<localRepository>/path/local/repo</localRepository>
<!-- 是否启用交互模式 -->
<interactiveMode>false</interactiveMode>
<!-- 是否启用离线模式 -->
<offline>false</offline>
<!-- 配置镜像 -->
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<!-- 配置代理 -->
<proxies>
<proxy>
<id>example-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.example.com</host>
<port>8080</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
</proxy>
</proxies>
<!-- 配置服务器认证信息 -->
<servers>
<server>
<id>deploymentRepo</id>
<username>deployuser</username>
<password>deploypassword</password>