配置
环境变量
Win


mac
我配在用户级环境文件设置
vim ~/.bash_profile
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export MAVEN_HOME=/Users/liuchenyun/dev/devtool/apache-maven-3.8.4
export PATH=$PATH:$MAVEN_HOME/bin因为配置的用户级系统变量,每次登陆时读取环境变量,所以这次手动更新,以后不需要
source ~/.bash_profile
配置setting.xml
全局 settings、用户 setting、pom 的区别
- 全局 settings.xml 是 maven 的全局配置文件,一般位于 ${maven.home}/conf/settings.xml,即 maven 文件夹下的 conf 中。
- 用户 setting 是 maven 的用户配置文件,一般位于 ${user.home}/.m2/settings.xml,即每位用户都有一份配置文件。
- pom.xml 文件是项目配置文件,一般位于项目根目录下或子目录下。
配置优先级从高到低:pom.xml > 本地 settings > 全局 settings
settings 配置详解
<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
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库 -->
<localRepository>
<!-- maven 是否需要和用户交互以获得输入。默认为 true。 -->
<interactiveMode>
<!-- 系统不能联网时,可以通过次配置来离线运行。默认为 false -->
<offline>
<!-- -->
<pluginGroups>
<!-- 私服设置 -->
<servers>
<!-- 镜像仓库 -->
<mirrors>
<!-- 配置代理 -->
<proxies>
<!-- 构建配置 -->
<profiles>
<!-- 激活的 profile。 -->
<activeProfiles>
</settings>localRepository
配置本地仓库
默认配置在Default: ${user.home}/.m2/repository,我们把注释里的摘出来配置。
win
<localRepository>E:\maven\mavenRepository</localRepository>mac
跟wins中一样,但setting标签的约束版本不同,仔细对比,copy过来
<localRepository>\Users\liuchenyun\dev\devtool\mavenRepository</localRepository>mirrors
配置仓库镜像
配置在里
阿里云镜像地址,搜索maven
<!-- 外网 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!-- 内网 -->
<mirror>
<id>ispeco-snapshots</id>
<mirrorOf>*</mirrorOf>
<name>Repository for ispeco</name>
<url>http://maven.ispeco.com/maven</url>
</mirror>servers
当使用 maven 私服时,某些私服需要配置认证信息,需要在此处填写相应的配置。
之所以不写在 pom.xml 中是因为一般项目在上传至代码仓库时同样会将 pom.xml 上传,而 setting.xml 一般位于用户本地,因此相对比较安全。
其下面可以定义一系列的server子元素,表示当需要连接到一个远程服务器的时候需要使用到的验证方式。
这主要有username/password和privateKey/passphrase这两种方式
<!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。 -->
<servers>
<!--服务器元素包含配置服务器时需要的信息 -->
<server>
<!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。 -->
<id>server001</id>
<!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。 -->
<username>admin</username>
<!--鉴权密码 。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。密码加密功能已被添加到2.1.0 +。详情请访问密码加密页面 -->
<password>admin123</password>
<!--鉴权时使用的私钥位置。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)以及如果需要的话,一个密语。将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。 -->
<privateKey>${usr.home}/.ssh/id_dsa</privateKey>
<!--鉴权时使用的私钥密码。 -->
<passphrase>some_passphrase</passphrase>
<!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。 -->
<filePermissions>664</filePermissions>
<!--目录被创建时的权限。 -->
<directoryPermissions>775</directoryPermissions>
</server>
</servers>
...
</settings><server>
<id>ftp-ispeco</id>
<username>upload</username>
<password>uuuppp</password>
</server>
<server>
<id>ftp-ispeco-snapshots</id>
<username>upload</username>
<password>uuuppp</password>
</server>
<server>
<id>snapshot_maven</id>
<username>mavenc</username>
<password>admin123</password>
</server>
<server>
<id>release_maven</id>
<username>mavenc</username>
<password>admin123</password>
</server>proxies
用来配置代理。proxies:其下面可以定义一系列的proxy子元素,表示Maven在进行联网时需要使用到的代理。当设置了多个代理的时候第一个标记active为true的代理将会被使用。
<proxies>
<!--代理元素包含配置代理时需要的信息 -->
<proxy>
<!--代理的唯一定义符,用来区分不同的代理元素。 -->
<id>myproxy</id>
<!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 -->
<active>true</active>
<!--代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<protocol>http</protocol>
<!--代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<host>proxy.somewhere.com</host>
<!--代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<port>8080</port>
<!--代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。 -->
<username>proxyuser</username>
<!--代理的密码,用户名和密码表示代理服务器认证的登录名和密码。 -->
<password>somepassword</password>
<!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。 -->
<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
</proxy>
</proxies><proxies>
<proxy>
<id>chengdu</id>
<active>true</active>
<protocol>http</protocol>
<host>192.168.20.142</host>
<port>8888</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>profiles
据环境参数来调整构建配置的列表。用于定义一组 profile
seetings 中的 profile 是 pom.xml 中 profile 元素的裁剪版本。
它包含了 id、activation、repositories、pluginRepositories 和 properties 元素。这里的 profile 元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是 settings.xml 文件的角色定位),而非单独的项目对象模型设置。如果一个 settings.xml 中的 profile 被激活,它的值会覆盖任何其它定义在 pom.xml 中带有相同 id 的 profile。
以下详解:https://blog.csdn.net/Michaelwubo/article/details/134682797
repositories
properties
id
pluginRepositories
activation <profile>
<id>ispeco</id>
<repositories>
<repository>
<id>ispeco</id>
<name>iSPECO Maven Repo</name>
<url>http://maven.ispeco.com/maven</url>
<releases>
<!-- always, daily(default), interval:15(minutes), never -->
<updatePolicy>interval:60</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<!-- always, daily(default), interval:15(minutes), never -->
<updatePolicy>interval:30</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
</repository>
<repository>
<id>ispeco-snapshots</id>
<name>iSPECO Maven Snapshot Repo</name>
<url>http://maven.ispeco.com/snapshots</url>
<releases>
<enabled>false</enabled>
<!-- always, daily(default), interval:15(minutes), never -->
<updatePolicy>interval:60</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<!-- always, daily(default), interval:15(minutes), never -->
<updatePolicy>interval:30</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
</repository>
</repositories>
</profile>activeProfiles
在运行时手工激活的 profile。
<activeProfiles>
<activeProfile>ispeco</activeProfile>
<!-- <activeProfile>anotherAlwaysActiveProfile</activeProfile> -->
</activeProfiles>通过命令行的方式激活
mvn package -P dev