Maven配置文件settings.xml元素说明(3.9.4版本)
·
Maven中的settings可能会在两个位置存在,一个是maven安装目录<maven.home>/conf/settings.xml,另一个是用户目录<user.home>/.m2/settings.xml,这两个文件前者是全局配置,后者是用户配置,如果这两个位置都有settings文件存在,那么内容会被合并,以用户配置作为主导。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<!--指定本地仓库的地址,用于存储下载的包-->
<localRepository>D:\Environment\Maven\apache-maven-3.9.4\repository</localRepository>
<!--是否与用户输入进行交互-->
<interactiveMode>true</interactiveMode>
<!--是否离线模式-->
<offline>false</offline>
<!--一个包含了maven插件的groupId的列表-->
<pluginGroups>
<!--
里面的每一项都是一个组id 配置这个可以让在命令行执行mvn命令时,省略插件的组id
例如:mvn org.eclipse.jetty:jetty-maven-plugin:run 可以简化为 mvn jetty:run
-->
<pluginGroup>org.eclipse.jetty</pluginGroup>
</pluginGroups>
<!--代理-->
<proxies>
<proxy>
<!--唯一标识,区分两个proxy-->
<id/>
<!--是否使用,多个代理之间只能有一个是激活的-->
<active>false</active>
<!--protocol, host, port 这三个元素拼接就是具体的代理地址-->
<protocol/>
<host/>
<port/>
<!--代理服务器的账号密码 如果需要的话-->
<username/>
<password/>
<!--不代理的地址列表,竖线或者逗号分割都可以-->
<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
</proxy>
</proxies>
<!--
一些开发或者下载时需要的仓库会被定义在POM的repositories和distributionManagement中
然而,有一些例如username和password的设置不应该跟随pom.xml一些被分发
这些类型的信息就应该存在settings.xml的servers部分中
-->
<servers>
<server>
<!--server的这个id,不是作为用户登录使用的,而是去匹配repository/mirror中的id元素,maven会尝试去连接-->
<id>server001</id>
<!--username和password会作为一个对出现,意味着要用他们去服务器进行认证-->
<username/>
<password/>
<!--
privateKey和passphrase,就像上面的账号密码一样,这两个标签具体指向了一个私钥的路径
默认是${user.home}/.ssh/id_dsa,和一个密码,如果有需要的话,passphrase 和password 元素会在将来被外部化,但对于现在来说
这两个元素必须在settings.xml中以明文的形式被设置
如果你用了私钥的形式登录 password就要被删除,不然私钥会被忽略
-->
<privateKey/>
<passphrase/>
<!--
filePermissions和directoryPermissions
当仓库文件或目录在开发时被创建,仓库文件或目录的权限会使用filePermissions和directoryPermissions的值
权限采用三个数字,和linux文件权限相同
-->
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration/>
</server>
</servers>
<!--镜像,配置maven可以获取具体开发库的地址-->
<mirrors>
<!--最多只能为一个特定的仓库设置一个镜像,换句话说,你不能用相同的mirrorOf去定义一个仓库,这样做的话maven只会选择第一个匹配的仓库-->
<!--如果将mirrorOf设置为 *,则表示maven所有的下载包的请求都会被映射到这个仓库上-->
<!--mirrorOf可以用逗号作为分隔符配置多个,感叹号用于排除不想要的id-->
<!--请注意mirrorOf之间不要有空格-->
<!--当maven去找一些仓库的镜像时,他会先去寻找是否有精确匹配到mirrorOf的,如果没有直接匹配到的,就会根据规则去挑选第一个声明的镜像,
因此,可以通过定义mirror顺序去影响匹配顺序-->
<mirror>
<!--
id, name需要被设置为对用户友好的独一无二的标识符表名这个镜像的名字
id是用于去区分两个mirror元素和在连接镜像的时候去挑选相应的sever元素的认证信息(如果有的话)
-->
<id>public-aliyun</id>
<name>public-aliyun</name>
<!--
url是镜像的基本地址,构建时会用这个url去连接仓库,而不是用原始的仓库地址
-->
<url>https://maven.aliyun.com/repository/public</url>
<!--镜像存储仓库的id
例如:要指向一个maven central(https://repo.maven.apache.org/maven2/)仓库的镜像
就设置这个元素为 central,更多高级映射例如,repo1,repo2 或者 *,!xxx 同样都是可行的,这个不能id元素匹配
-->
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>gradle-plugin</id>
<name>gradle-plugin</name>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/gradle-plugin</url>
</mirror>
<mirror>
<id>apache snapshots</id>
<name>apache snapshots</name>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
<mirror>
<id>central-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>central-aliyun</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<mirrorOf>com.e-iceblue</mirrorOf>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</mirror>
</mirrors>
<!--
profile 元素就是pom.xml的简易版本
由 activation, repositories, pluginRepositories , properties 组成
profile 只有以上四个元素 因为他们自身被认为与构建系统是一个整体(这也是setting文件所扮演的角色)
无关独立的项目
如果settings的profile被激活,他会重写任何一个profiles.xml或POM中id相同的profile
-->
<profiles>
<profile>
<id>test</id>
<!--activation是profile的关键配置,他会在所有条件满足时生效-->
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.5</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>
<name>mavenVersion</name>
<value>2.0.3</value>
</property>
<file>
<exists>${basedir}/file2.properties</exists>
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
<!--properties是值的占位符,通过使用${x}可以在pom的任何地方访问到具体值,他们有五个不同的风格,所有都可以从settings中访问到-->
<!--
env.X:在变量前加上“env”。将返回shell的环境变量。例如:${env。PATH}包含$ PATH环境变量(Windows中为%PATH%)
project.X:POM中以点(.)表示的路径将包含相应元素的值。例如:<project><version>1.0</version></project>可以通过${project.version}访问。
setting.X:在settings.xml中以点(.)表示的路径将包含相应元素的值。例如:<settings><offline>false</offline></settings>可以通过${settings.offline}访问。
Java系统属性:通过Java.lang.System.getProperties()访问的所有属性都可以作为POM属性使用,例如${Java.home}。
在<properties/>元素或外部文件中设置,该值可以用作${someVar}。
-->
<properties>
<user.install>${user.home}/our-project</user.install>
</properties>
</profile>
</profiles>
<!--settings.xml的最后一块拼图,他包含了一系列activeProfile 元素,每一个activeProfile 元素都有一个profileId作为值-->
<!--activeProfile指定的profile文件,无论他环境设置是否满足,都会被激活,如果指定的profileId没有找到对应profile 什么都不会发生-->
<activeProfiles/>
</settings>
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)