Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
settings.xml 负责的是整体的构建过程, pom.xml 负责单独的项目对象构建过程。
settings.xml是maven最重要的配置,可以配置相关的元素,注意:settings配置的属性在pom也是可以引用的。Maven本身内置了一个中央仓库的地址"http://repo1.maven.org/maven2",该中央仓库包含了世界上绝大部分流行的开源项目构件,Mavne会在需要的时候去那里下载,当然也可以配置自己的中央仓库地址,去自己的中央仓库下载构件。
在idea配置maven时,需要提前将配置文件setting进行对应的编辑。
基础元素的配置项:
其他元素的配置项:
<proxies></proxies> 代理
需要proxy是因为很多时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这种情况下,就需要为Maven配置HTTP代理,才能让它正常访问外部仓库,以下载所需要的资源。proxies下可以配置多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。active为true表示激活该代理,protocol表示使用的代理协议,当然最重要的是指定正确的主机名(host)和端口(port),如果代理服务器需要认证则配置username和password,nonProxyHost元素表示指定哪些主机名不需要代理,可以用"|"分隔多个主机名,也支持通配符"*"。
<profiles></profiles> 配置 (含repository)
<profiles></profiles> 元素中包含<repository>元素,repository表示Maven的中央仓库。
我们下载maven之后,直接使用,也是可以直接下载依赖的,因为maven的安装包中已经放置了中央仓库,不同的版本路径是一样的,我安装的是3版本的,它的位置是:lib/maven-model-builder-3.5.4.jar解压中的pom.xml中。
profiles中可以声明多个repository。id必须是唯一的,尤其注意,Maven自带的中央仓库使用的id为central,如果其他仓库声明也用该id,就会覆盖中央仓库的配置。releases和snapshots比较重要,前者表示开启仓库的发布版本下载支持,后者表示关闭仓库的快照版本下载支持,这样一来,Maven就会去仓库下载发布版本的构件而不会下载快照版本的构件了。
由于中央仓库在国外,所以我们下载的速度比较慢,所以一般都会使用国内的仓库。国内一般都是用阿里的仓库。
<server></server> 认证元素
配置服务端的一些设置。大部分远程仓库无须认证就可以访问,但是有时候处于安全方面的因素考虑,需要提供认证信息才能访问一些远程仓库。如果有搭建自己公司的maven私服,公司内部会把自己的公司的公共jar包上传到maven私服中。如果私服配置了上传权限,servers标签需要给出授权信息。如:
当然如果你用的不是私服仓库或者不需要认证的话,<servers>标签中内容注释掉也是没有问题的。
<mirror></mirror> 镜像仓库
上面提到,maven下载后会自带一个中央仓库地址,这个是国外的,因为下载速度比较慢,大家常用国内aliyun的中央仓库。而mirror镜像会对仓库的请求进行过滤,也就是说当我们下载依赖的时候,如果镜像中存在,就直接从镜像中下载。
mirror不一定需要配置,在不配置镜像的情况下,maven默认会使用中央库。镜像仓库也可以配置多个,一般来说,多个 mirror 优先级,按照 id字母顺序进行排列。现在本地仓库中找,然后在第一个镜像仓库中找,找不到不到依赖才,才会去找第二个镜像仓库,最后才会去repository中配置的中央仓库中找。
- 注意
<mirror>标签中<mirrorof>*</mirrorof>表示该配置为所有中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像。另外三个元素id、name、url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似的,如果该镜像需要认证,也可以基于该id配置仓库认证。
举例:如果只是自己简单开发一个demo,可以直接套用一下这个:
<?xml version="1.0" encoding="UTF-8"?>
<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>E:\im2MavenLocal</localRepository>
<!-- <interactiveMode>true</interactiveMode> -->
<!-- <offline>false</offline> -->
<pluginGroups>
<!-- <pluginGroup>com.your.plugins</pluginGroup> -->
</pluginGroups>
<proxies>
<profile>
<id>maven-repo</id>
<repositories>
<repository>
<id>central</id>
<name>central</name>
<url>https://maven.aliyun.com/repository/central/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</proxies>
<servers>
<!--
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
-->
<!-- Another sample, using keys to authenticate.
<server>
<id>siteServer</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>optional; leave empty if not used.</passphrase>
</server>
-->
</servers>
<mirrors>
<!-- 可以配置多个 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
<profiles>
<!--
<profile>
<id>env-dev</id>
<activation>
<property>
<name>target-env</name>
<value>dev</value>
</property>
</activation>
<properties>
<tomcatPath>/path/to/tomcat/instance</tomcatPath>
</properties>
</profile>
-->
</profiles>
<!--
<activeProfiles>
<activeProfile>alwaysActiveProfile</activeProfile>
<activeProfile>anotherAlwaysActiveProfile</activeProfile>
</activeProfiles>
-->
</settings>
总结:
以上概括了maven的一些配置元素项,有助于自己对maven更好的理解。至于其他配置元素可以参考其他更多的资料。在打开idea加载项目时,maven大片报错爆红,需要检查一下maven配置是否正确。