maven 的配置文件 settings.xml 讲解

本文详细介绍了Maven中settings.xml文件的关键配置节点,包括本地仓库地址、服务器认证、镜像仓库、profiles以及如何根据项目需求定制远程仓库配置和激活profile。
摘要由CSDN通过智能技术生成

相信大家对于maven是不陌生的,在项目中需要经常用到,这次就记录一下在使用maven中, maven 的 settings.xml 文件配置的一些节点是什么意思。希望可以对你所有帮助!

1、settings.xml 格式

有些可配置也可不配置。

2、localRepository 配置

localRepository配置项用来配置maven的本地仓库地址,简单说就是用来存储通过maven下载下来的各种jar包。如果我们的项目pom.xml文件依赖了某个jar包,默认会先从我们本地仓库去查找,查不到的请求下,再去请求外部仓库。

默认值为:${user.home}/.m2/repository

<localRepository>D:\repository</localRepository>

3、servers 配置

远程仓库的身份验证配置,可以配置多个 server 身份。

<servers>
  <!-- 
	<server>
      <id>serverId</id>
      <privateKey>/private/key</privateKey>
      <passphrase>XXXX</passphrase>
    </server>
  -->

	<server>
      <id>maven-central</id>
      <username>account</username>
      <password>pwd</password>
    </server>
	
  </servers>

  id:对应 repositorymirror 的id,用来指定该配置项是针对哪个仓库的,必填。
  username: 账号
  password:密码

        username 和 password 是成对出现

  privateKey:访问仓库的私钥
  passphrase:访问仓库的口令,可选

          privateKey 和 passphrase 是成对出现,

和以上账号密码二选一即可。

4、mirrors 配置

远程仓库的镜像站点配置,镜像站点为首选。可以基于以下情况来考虑使用mirrors镜像配置。
      1、分担远程仓库的访问压力,同时又不希望修改 repoistory 仓库的配置。
      2、用自己公司的内部仓库替换特定的仓库,比如替换central仓库(中央仓库)。

<mirrors>
	
  	<mirror>
      <id>alimaven-central</id>
      <name>aliyun maven</name>
      <mirrorOf>central</mirrorOf>
      <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

  	<mirror>
      <id>maven-central</id>
      <name>zj nexus</name>
      <mirrorOf>*,!aliyun,!spring-cloud</mirrorOf>
      <url>http://ip:18081/repository/maven-public/</url>
    </mirror>

  </mirrors>

id:镜像仓库的id,要保证唯一,不能和 mirrorsrepositories 下面的id相同,因为镜像仓库本质上也是仓库,下载jar包时,会根据此 id 去 servers 结点下面查找 server 节点配置的认证信息。

name:镜像仓库的名称,方便用户识别该仓库。

mirrorOf:需要做镜像的仓库的id值,也就是取 repository 的id值,

        <mirrorOf>central</mirrorOf>表示当前这个镜像将用于代替默认的中央仓库。

url:镜像仓库的地址。

5、profiles 配置

配置文件列表,可以通过多种方式激活。

profiles 用来配置一系列的配置信息,通过指定其激活条件来激活,可以配置多个 profile。

    id:唯一
    activation:指定激活条件
      activeByDefault:没有其它的 profile 为激活状态时,该 profile 默认激活。
    repositories: 配置远程仓库信息。
    pluginRepositories:配置插件仓库。

<profile>
  <id>jdk8</id>
  <activation>
     <jdk>1.8</jdk>
     <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
      <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  </properties>
</profile>

5.1、repositories 配置

repositories 配置在 profiles 中的 profile 节点下,是用来配置远程仓库信息的。

        id:远程仓库唯一标识符,要唯一
        name:描述
        url:远程仓库的url地址
        layout:定位和排序构件的仓库布局类型
              1、default(默认)
              2、legacy(遗留)
        releases:发布版本,true则表示下载的构件是releases版本的构件,禁止从公共仓库下载                     snapshot构件是推荐的做法,这些构件不稳定,且不受你控制。
        snapshots: 快照版本,false是表示不要下载snapshots版本的构件。

pluginRepositories 同理 repositories ,只不过是配置插件仓库信息的。配置节点也和 repositories 一样,都是配置仓库信息的。

<profile>
	<id>maven-central</id>
    <repositories>
        <repository>
			<id>maven-cen</id>
			<url>http://ip:port/repository/maven-public/</url>
            <layout>default</layout>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>    
		</repository>

		<repository>
          <id>aliyun</id>
          <name>aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<id>maven-central</id>
			<url>http://ip:port/repository/maven-public/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>

</profile>

6、activeProfiles 配置

activeProfiles 配置项用来指定哪些 profile 生效,作用激活 profiles 下的 profile

        activeProfile 对应的值就是 profileid

<activeProfiles>
   <activeProfile>maven-central</activeProfile>
</activeProfiles>

7、案例

<?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配置项用来配置maven的本地仓库地址,简单说就是用来存储通过maven下载下来的各种jar包。如果我们的项目pom.xml文件依赖了某个jar包,默认会先从我们本地仓库去查找,查不到的请求下,再去请求外部仓库。-->
  <localRepository>D:\repository</localRepository>

  <pluginGroups>
   
  </pluginGroups>

  <proxies>
   
  </proxies>

  <servers>
  <!-- 
    配置各个远程仓库的认证信息
    	id:对应 repository 或 mirror 的id,用来指定该配置项是针对哪个仓库的,必填项
    	username: 账号
    	password:密码

    	username 和 password 是成对出现

    	privateKey:访问仓库的私钥
    	passphrase:访问仓库的口令,可选

    	privateKey 和 passphrase 是成对出现, 和以上账号密码二选一即可。

	  <server>
      <id>serverId</id>
      <privateKey>/private/key</privateKey>
      <passphrase>XXXX</passphrase>
    </server>
  -->
	<server>
      <id>maven-central</id>
      <username>account</username>
      <password>pwd</password>
    </server>
	
  </servers>


  <mirrors>
	 <!--
    mirrors配置项主要是用来为远程仓库配置镜像站点。

    id,镜像仓库的id,要保证唯一,不能和 mirrors 和 repositories 下面的id相同,因为镜像仓库本质上也是仓库,下载jar包时,会根据此 id 去 servers 节点点下面查找server结点配置的认证信息
    name,镜像仓库的名称,方便用户识别该仓库
    mirrorOf,需要做镜像的仓库的id值,也就是取 repository 的id值, <mirrorOf>central</mirrorOf>表示这个镜像将用于代替默认的中央仓库
    url,镜像仓库的地址
    
   -->
  	<mirror>
      <id>alimaven-central</id>
      <name>aliyun maven</name>
      <mirrorOf>central</mirrorOf>
      <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

  	<mirror>
      <id>maven-central</id>
      <name>zj nexus</name>
      <mirrorOf>*,!aliyun,!spring-cloud</mirrorOf>
      <url>http://ip:18081/repository/maven-public/</url>
    </mirror>

  </mirrors>

  <!-- 
    profiles 用来配置一系列的配置信息,通过指定其激活条件来激活,可以配置多个 profile

    id:唯一
    activation:指定激活条件
      activeByDefault:没有其它的 profile 为激活状态时,该 profile 默认激活。
    repositories: 配置远程仓库信息。
    pluginRepositories:配置插件仓库。
   -->
  <profiles>

		<profile>
      <id>jdk8</id>
      <activation>
        <jdk>1.8</jdk>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
    </profile>
		
		<profile>
			<id>maven-central</id>
      
      <!--
          repositories 用来配置maven的远程仓库信息。
          
          id:远程仓库唯一标识符,要唯一
          name:描述
          url:远程仓库的url地址
          layout:定位和排序构件的仓库布局类型
            1、default(默认)
            2、legacy(遗留)
          releases:发布版本,true则表示下载的构件是releases版本的构件,禁止从公共仓库下载snapshot构件是推荐的做法,这些构件不稳定,且不受你控制。
          snapshots: 快照版本,false是表示不要下载snapshots版本的构件。
      -->
      <repositories>

				<repository>
					<id>maven-cen</id>
					<url>http://ip:port/repository/maven-public/</url>
          <layout>default</layout>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>    
				</repository>

				<repository>
          <id>aliyun</id>
          <name>aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>

			</repositories>

      <!-- 
        pluginRepositories 配置插件仓库。
        
        pluginRepository 下的节点与 repository 下的节点一样。都是配置仓库的
       -->
			<pluginRepositories>
				<pluginRepository>
					<id>maven-central</id>
					<url>http://ip:port/repository/maven-public/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				 </pluginRepository>
			</pluginRepositories>

		</profile>

  </profiles>

  <!-- 
    activeProfiles 配置项用来指定哪些 profile 生效,

    activeProfile 对应的值就是 profile 的id
   -->
  <activeProfiles>
    <activeProfile>maven-central</activeProfile>
  </activeProfiles>

</settings>

注意:这是个案例,需要根据自己项目的实际情况调整配置。

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: maven配置文件settings.xmlMaven的全局配置文件,它包含了Maven的全局配置信息,如Maven的本地仓库路径、代理服务器、镜像仓库等。在使用Maven构建项目时,Maven会自动读取settings.xml文件中的配置信息,以便正确地执行构建任务。用户可以通过修改settings.xml文件来定制Maven的配置,以满足自己的需求。 ### 回答2: Maven是一个开源的项目管理工具,主要用于自动化构建和部署Java应用程序。它通过XML配置文件来进行各种设置,其中一个非常重要的配置文件就是settings.xmlsettings.xml文件位于Maven安装目录下的conf文件夹中,可以通过修改该文件来定制Maven的设置和行为。默认情况下,settings.xml文件包含了一些基本的配置项,例如Maven仓库的路径、代理服务器、镜像设置、认证信息等。 在settings.xml文件中,我们可以配置Maven的全局设置和个人设置。全局设置适用于所有Maven项目,而个人设置只适用于当前用户。全局设置保存在Maven安装目录下的conf/settings.xml文件中,而个人设置保存在用户主目录下的.m2/settings.xml文件中。 在settings.xml文件中,常用的配置项包括: 1. 本地仓库路径:该路径指定本地Maven仓库的位置,可以在该位置下保存所有的Maven构建产物。 <localRepository>/path/to/local/repo</localRepository> 2. 镜像源设置:用于配置Maven下载依赖包和插件时使用的镜像源,可以提高下载速度。常用的镜像源有阿里云、华为云等。 <mirrors> <mirror> <id>alimaven</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> 3. 代理服务器设置:如果你的网络需要通过代理服务器才能连接到互联网,可以在此处设置代理服务器的地址和端口号。 <proxies> <proxy> <id>myproxy</id> <active>true</active> <protocol>http</protocol> <host>proxy.example.com</host> <port>8080</port> </proxy> </proxies> 4. 认证信息设置:如果您的Maven仓库需要用户名和密码才能访问,可以在此处设置认证信息。 <servers> <server> <id>myserver</id> <username>myusername</username> <password>mypassword</password> </server> </servers> 总之,settings.xml文件是Maven构建工具中非常重要的配置文件,可以影响整个项目的构建和部署。因此,建议开发人员在使用Maven时认真阅读该文件并根据实际情况进行配置。 ### 回答3: Maven是一款开源的构建工具,可以帮助我们自动化地完成Java项目的构建、依赖管理等工作。Maven配置文件settings.xml是非常重要的配置文件之一,它可以帮助我们配置一些Maven的全局设置以及对仓库的管理。 settings.xml文件的位置 settings.xml文件位于Maven的配置目录中,通常为"~/.m2/settings.xml"(Linux/Unix)或"%USERPROFILE%/.m2/settings.xml"(Windows),其中“~”表示用户主目录。如果该目录下没有settings.xml文件,可以执行mvn help:system命令生成默认的settings.xml文件。 settings.xml文件的作用 settings.xml可以用于配置一些常用的全局设置,例如: - 仓库的位置、访问方式、身份验证信息等; - Maven插件的配置; - 代理服务器的配置; - JDK版本的设置; - POM文件中常量的设置; - 等等。 其中,最常用的是仓库的配置。 配置仓库 Maven的仓库是存放工程构建产生的库文件、依赖库文件的地方。默认情况下,Maven会从中央仓库进行依赖的下载。中央仓库对于一些公共的依赖是支持的,但是对于一些私有的依赖则需要配置仓库。 我们可以在settings.xml中配置我们自己的私有仓库,以便Maven能够从这个仓库中下载需要的依赖。配置仓库可以通过如下几个节点: <servers> # 服务器列表,用于验证访问私有仓库的账号、密码等身份验证信息,例如: <server> <id>my-repository</id> <username>somename</username> <password>somepassword</password> </server> </servers> <repositories> # 仓库列表,用于指定Maven下载和使用依赖的地方,例如: <repository> <id>my-repository</id> <url>http://example.com/maven2</url> <releases> <enabled>true</enabled> <checksumPolicy>fail</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <mirrors> # 镜像列表,用于指定Maven下载依赖时的镜像站点,例如: <mirror> <id>my-mirror</id> <name>My Company Mirror</name> <url>http://example.com/maven2</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> 需要注意的是,如果我们配置了自己的私有仓库,那么我们还需要在POM文件中引用这个仓库。 其他配置项 除了仓库以外,settings.xml还可以配置一些其他的常用项,例如: - proxies节点:用于配置代理服务器; - pluginGroups节点:用于配置Maven插件的组; - profiles节点:用于为特定的构建工程指定特定的配置文件; - 常量的设置:例如java.version、encoding等。 总结 settings.xmlMaven中最重要的配置文件之一,它可以用于配置全局性的设置,例如仓库、代理服务器、JDK版本等。在实际项目中,我们需要对settings.xml进行合理地配置,以便能够更加高效地使用Maven进行工程构建、依赖管理等工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值