Maven最详细的l配置⽂件解释
l详解
maven的主配置⽂件缺省名称为 l 其完整结构如下(为了⽅便阅读,删除了注释部分):
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="/SETTINGS/1.0.0"
xsi="/2001/XMLSchema-instance"
schemaLocation="/SETTINGS/1.0.0 /xsd/settings-1.0.0.xsd">
<localRepository>/path/to/local/repo</localRepository>
<interactiveMode>true</interactiveMode>
<offline>false</offline>
linux系统安装步骤csdn<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirrors>
</mirrors>
<profiles>
</profiles>
<activeProfiles>
</activeProfiles>
</settings>
conf ⽬录和 .m2 ⽬录
如果你是第⼀次安装maven,你能够在安装⽬录下的conf⽬录中到l 配置⽂件,但如果你第⼀次使⽤maven进⾏项⽬构建后,你会发现在你的⽤户⽬录中,会出现⼀个.m2的隐藏(windows中⾮隐藏,. 前缀为linux内核操作系统中的隐藏⽂件前缀)⽬录。通常,我们会把 **conf⽬录 **中的l⽂件复制到 .m2⽬录中进⾏使⽤。实际上这是基于操作系统本⾝,相对于maven使⽤⽤户的⼀次分隔,不同的⽤户登录操作系统后将使⽤不同的l配置⽂件。如何达到这⼀⽬的,maven通过内置的l加载规则完成。
如上图所⽰,maven在构建项⽬获取配置⽂件时,⾸先会查⽤户⽬录下的.m2⽬录,如果存在则使⽤,如果不存在再获取安装⽬录下conf⽬录中的配置⽂件,因此我们这样描述两个⽬录中配置⽂件的不同, .m2⽬录是⽤户级的配置,⽽conf⽬录是系统全局的配置。**
注: 如果需要在项⽬构建时使⽤特定的配置⽂件,可以使⽤ **mvn -s 配置⽂件绝对路径 + 构建命令**
完成构建
1. settings
<settings xmlns="/SETTINGS/1.0.0"
xsi="/2001/XMLSchema-instance"
schemaLocation="/SETTINGS/1.0.0 /xsd/settings-1.0.0.xsd">
<!--Xml name space 的缩写,标识了该⽂档使⽤ /SETTINGS/1.0.0 的命名空间 -->
xmlns="/SETTINGS/1.0.0"
<!--标识xsd⽂件的命名空间,使⽤标准的/2001/XMLSchema-instance -->
xmlns:xsi="/2001/XMLSchema-instance"
<!--标识xsd(⽂档结构定义⽂件)的URI -->
xsi:schemaLocation="/SETTINGS/1.0.0 /xsd/settings-1.0.0.xsd"
<!--如对该部分内容感兴趣,可以访问 blog.csdn/lengxiao1993/article/details/77914155 -->
</settings>
2. localRepository
输⼊内容:仓库⽬录的绝对路径
默认值: ${user.home}/.m2/repository
释义:配置maven 本地依赖仓库的绝对路径。也就是你通过l⽂件的dependencies定义的依赖,在maven构建(package 和install 命令)时将被下载到这个本地仓库。
注:建议将仓库配置到系统运⾏盘以外的磁盘。
3. interactiveMode
输⼊内容:true | false
默认值: true
释义:Maven在运⾏时是否需要和⽤户交互以获得输⼊。如果Maven需要和⽤户交互以获得输⼊,则设置成true,反之则应为false。默认为true。
测试了⼀下,不知道这个交互体现在哪⾥,由于这个内容资料较少,且似乎没有太⼤的⽤处,因⽽这⾥不多讨论。
4. offline
输⼊内容:true | false
默认值: false
释义: 是否脱机运⾏,默认时false,也就是在构建项⽬时链接⽹络,如果设置为true,可能在下载依
赖或者远程部署时会发⽣错误,建议保持默认值
5. pluginGroups
组成:pluginGroup
释义: 常⽤插件组的定义,包含多个 pluginGroup 标签。
maven除了提供内置的clean,test,package,install,deploy等插件之外, 还⽀持引⼊第三⽅插件。
在使⽤插件时,正式的命令是 mvn 插件groupId:插件artifactId:插件⽬的goal 例如 clean插件, mvn org.apache.maven.plugins:maven-clean-plugin:clean 。但如果你已经使⽤了⼀段时间maven,你会发⽣,更常使⽤的命令是mvn clean:clean 或者 mvn clean。为什么可以使⽤这些简写呢?正是由于pluginGroups和插件调⽤规则起的作⽤。
pluginGroups默认配置了 org.apache.maven.plugins和jo ;即如下所⽰
<pluginGroups>
<pluginGroup>org.apache.maven.plugins</pluginGroup>
<pluginGroup&jo</pluginGroup>
</pluginGroups>
⼀旦在pluginGroups中配置了插件的GroupId之后,也就意味着该插件组是你的常⽤插件(个⼈理解),你就可以不书写groupId, 直接通过书写插件的昵称进⾏调⽤。
例如我在项⽬中引⼊mybatis-generator插件
<!--注意,仅仅引⼊插件并不能完成⾃动⽣成⼯作,仍然需要引⼊相关的依赖包和配置⽂件 -->
<!--如果想要了解mybatis包括其衍⽣框架的代码⽣成⼯具,
可以查阅blog.csdn/weixin_43740223/article/details/108283753 -->
...
<build>
<plugin>
<groupId&ator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<configurationFile>${pom.basedir}/src/main/l</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
</build>
在未进⾏配置时, 我需要键⼊完整的插件索引才能执⾏插件,ator:mybatis-generator-maven-plugin:generate
⽽我们可以通过如下配置添加该插件组,此时我可以通过 mvn mybatis-generator:generate 直接进⾏插件的调⽤。
<pluginGroups>
<!-- pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup&ur.plugins</pluginGroup>
-->
<pluginGroup&ator</pluginGroup>
</pluginGroups>
注1:关于插件调⽤规则。有⼈注意到 mvn clean没有输⼊goal也能执⾏,那是因为当没有goal时,maven默认goal为 插件名 ,也就是你输⼊ mvn clean,实际上相当于 mvn clean:clean。例如有插件为 love 且其有goal设置为love, 我可以键⼊ mvn
love:love,也可以直接键⼊ mvn love,
因此,当插件的名称与goal不同名时,请注意正确使⽤⽅法。
注2:pluginGroups 似乎仅在旧版本起作⽤,新版本测试时发现不需要配置也可以直接使⽤ mvn plugi
nName 进⾏调⽤。不求甚解,望众位有则告知。
6. proxies
组成:proxy
释义:配置⽹络代理服务器,以⽤于部分或全部HTTP请求。通常⽤不到,国内访问远程仓库可以配置仓库镜像,如果需要通过代理访问⽹络的话,可以⽤proxies配置代理。
proxy
属性释义
id代理的ID,默认default
active是否激活该代理,默认true
protocol代理服务器的协议,默认http
host代理服务器的主机
port代理服务器的端⼝,默认8080
username代理服务器登录⽤户,仅在需要登录时配置
password代理服务器登录密码,仅在需要登录时配置
nonProxyHosts不使⽤该代理服务器的主机域名,多个域名使⽤
属性释义
官⽅提供的配置⽰例
<proxies>
<proxy>
<id>example-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host&le</host>
<port>8080</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts&le|*.example</nonProxyHosts>
</proxy>
</proxies>
7. servers
组成:server
释义:⽤于配置 依赖下载存储库 (POM中的repositories | pluginRepositories中定义的存储库 && l 中 profile | mirror 中定义的存储库) 以及 发布⼯件的存储库(POM中的distributionManagement定义的发布仓库)的鉴权信息和权限设置。
因为有些设置不适合和项⽬⼯件⼀同进⾏发布,例如服务器链接和密码,这将可能导致密码泄露。 因
⽽可以在配置发布和依赖下载的仓库后,如果访问仓库需要进⾏鉴权,可以在l 中的servers块中进⾏定义,两者通过id进⾏关联。
server
属性释义
id存储库的id,与POM中的repositories
username访问存储库的⽤户名,当访问需要验证⾝份时,配置password填写验证信息
password访问存储库的密码,当访问需要验证⾝份时,配置username填写验证信息
privateKey 访问存储库的ss密钥路径,如果访问需要遵守ssh安全协议且采⽤密钥认证的话。 默认在本地的 ${user.home}/.ssh/id_dsa ⽬
录中
passphrase访问存储库的ssh⼝令,如果访问需要遵守ssh安全协议且采⽤⼝令认证的话。
filePermissions发布时创建的⽂件的访问权限,采⽤*nix⽂件权限格式,也就是我们常⽤的linux⽂件权
限⼀样。例如775等directoryPermissions发布时创建的⽬录的访问权限,采⽤*nix⽂件权限格式,也就是我们常⽤的linux⽂件权限⼀样。例如775等
configuration 访问存储库的⼀些其他配置,只有在访问特定类型的存储库时才可能⽤到,本⽂不多讨论。详情参考官⽹/guides/mini/guide-wagon-providers.html
上⽂中我们提到四种仓库 依赖仓库, 插件仓库, 镜像仓库以及 发布仓库。实际上,这⼏种仓库本质上都是⼀种仓库, ⽆论插件,第三⽅jar包还是项⽬构建的包⽂件都以⼏种特定的类型(jar | pom )存储在maven仓库中。
maven的仓库仅根据仓库的访问⽅式不同区分为 本地仓库 , 远程仓库。
本地仓库通过本机系统的⽂件服务器访问,
远程仓库通过⽹络获取资源同步到本地仓库实现访问。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论