maven环境搭建:
1.官网下载zip包,解压至任意目录(如:E:wlyapache-maven-3.2.5)
2.环境变量MAVEN_HOME(E:wlyapache-maven-3.2.5)、path追加"%MAVEN_HOME%in;"
3.cmd命令行mvn -v,正常输出maven版本代表OK
settings.xml详解:
操作setting.xml之前,先了解一下maven是基于用户的。默认全局的配置文件"maven安装目录/conf/settings.xml",可以拷贝"settings.xml"放到"用户目录/.m2"/下,此时用户目录下的settings.xml会覆盖原配置。
接下来我们看一下settings.xml中都能配置什么?下面内容以3.3.9版本为例:
官方文档传送门:http://maven.apache.org/ref/3.3.9/maven-settings/settings.html
配置大纲:
localRepository 本地仓库,默认在用户/.m2/repository interactiveMode 交互模式,默认为true
usePluginRegistry 是否使用plugin-registry.xml文件管理插件版本,默认为false offline 是否使用离线模式,默认为false proxies/proxy* 配置代理,通常给无法直接访问中央仓库的用户使用 servers/server* 服务器身份认证,比如当需要deploy一个包到远程仓库时,需要权限验证。此配置属于公用配置,且配置在pom.xml中不太安全,通常与<distributionManagement><id>匹配 mirrors/mirror* 镜像配置,会覆盖远程仓库配置 profiles/profile* 用于配置不同环境的差异文件 activeProfiles/activeProfile* 手动激活的默认差异文件 pluginGroups/pluginGroup* 当插件的groupId没有显式提供,从此插件的group中寻找需要的插件
详细配置说明:
代理(proxies/proxy*):
<proxies> <proxy> <!-- 代理标识 --> <id>testProxy</id> <!-- 是否激活,默认是true --> <active>true</active> <!-- 代理协议 --> <protocol>http</protocol> <!-- 用户名 --> <username>wang</username> <!-- 密码 --> <password>123</password> <!-- 端口 --> <port>8099</port> <!-- 主机 --> <host>proxy.xxx.com</host> <!-- 不需要代理的主机 --> <nonProxyHosts>*.xx1.com|*.xx2.com</nonProxyHosts> </proxy>
</proxies>
服务器认证(servers/server*):支持用户名/密码,公钥/私钥两种认证方式
<servers> <server> <!-- 服务标识 --> <id>server1</id> <!-- 用户名 --> <username>wang</username> <!-- 密码 --> <password>123</password> </server> <server> <id>server2</id> <privateKey>wang</username> <passphrase>456</passphrase> </server> </servers>
镜像(mirrors/mirror*):用<mirrorOf>配置覆盖一个或者多个仓库的配置。
<mirrorOf>元素:
* = everything
external:* = everything not on the localhost and not file based.
repo,repo1 = repo or repo1
*,!repo1 = everything except repo1
优点:1.速度快 2.使用自定义镜像可管控
<mirrors> <mirror> <!-- 镜像id,唯一标识 --> <id>central-mirror</id> <!-- 镜像名称 --> <name>Maven China Mirror</name> <!-- 镜像地址 --> <url>http://search.maven.org/#browse</url> <!-- 这个是谁的镜像,覆盖哪个仓库的配置 --> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
环境差异文件(profiles/profile*):
<profiles> <!--通过某些条件匹配来激活不同<profile>,如jdk、os、属性和属性值等等--> <profile> <!-- 唯一标识id --> <id>jdk-1.6</id> <!-- 激活条件 --> <activation> <jdk>1.6</jdk> </activation> <!-- 键值对属性 --> <properties> <property.key>property.value</property.key>
<!--
maven支持使用占位符的方式设置或获取值
1.env:操作系统环境变量
2.project.x:当前project的属性
3.setttings.x:对应settings.xml文件的属性
4.properties文件中的属性(redis.ip=10.11.12.13):redis.ip
5.x:<properties>中设置的属性
-->
<anykey>${env.path}</anykey>
</properties>
<!-- 仓库配置 --> <repositories> <repository> <id>仓库id</id> <name>仓库名称</name> <url>仓库url</url> <layout>在Maven 2/3中都是default,只有在Maven 1.x中才是legacy,默认也是default</layout> <!-- 发布的稳定版本 --> <releases> <checksumPolicy>当组件校验失败时,warn或fail</checksumPolicy> <enabled>是否使用此库下载组件</enabled> <updatePolicy>当组件在本地不存在时的更新策略:always、daily(default)、interval:xx(in minutes)、never</updatePolicy> </releases> <!-- 快照版本,注释同上 --> <snapshots> <checksumPolicy></checksumPolicy> <enabled></enabled> <updatePolicy></updatePolicy> </snapshots> </repository> </repositories> <!-- 插件仓库 --> <pluginRepositories> <pluginRepository> <!-- 配置与repository类似 --> </pluginRepository> </pluginRepositories> </profile> </profiles>
激活某个差异文件(activeProfiles/activeProfile*):
<!-- 指定某个profile生效 --> <activeProfiles> <activeProfile>对应profile id</activeProfile> </activeProfiles>
当插件groupId没有显示提供,使用此groupId进行查找(pluginGroups/pluginGroup*):
<pluginGroups> <!-- 当插件groupId没有显示提供,使用此groupId查找插件 --> <!-- 官网:(Many) List of groupIds to search for a plugin when that plugin groupId is not explicitly provided. --> <pluginGroup>org.mortbay.jetty</pluginGroup> <pluginGroup>org.codehaus.cargo</pluginGroup> </pluginGroups>