maven中settings.xml详解

maven仓库repository配置文件
  • 默认中央仓库:Maven安装目录下 lib/maven-model-builder-${version}.jar 中 \org\apache\maven\model\pom-4.0.0.xml 文件配置着默认中央仓库,它是所有Maven POM的父POM,所有Maven项目继承该配。
  • settings.xml:在Maven安装目录下 conf/settings.xml。
  • pom.xml:在项目中的pom.xml文件。
mirror和epository关系

mirror相当于 repository 的拦截器,把请求 repository 地址重定向到mirror里配置的地址,所以配置 mirror 时 mirrorOf 值很重要不能随便写,mirrorOf 要和 repository 的 id 值保持一致,如果 mirrorOf 配置的是 * 或 central 时,repository 可以不用配置,因为pom-4.0.0.xml文件中配置了一个默认中央仓库,而 * 则代表拦截所有repository ,所以也不用配置,mirrorOf 除了 * 或 central 外的其他值都必须配置 repository 的 id。

mirror和epository优先级

拉取jar包时的优先级别:pom.xml中repository > settings.xml中mirror > settings.xml中repository > 默认中央仓库,存在多个mirror配置的时候mirrorOf 等于 * 放到最后,同级别的 repository 根据 配置的先后顺序

<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:\myRepository</localRepository>
    
	<!-- Maven是否需要和用户交互以获得输入 -->
	<interactiveMode>true</interactiveMode>

	<!-- 否需要在离线模式下运行。当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用 -->
	<offline>false</offline>

	<!--当插件的组织Id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。当我们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表。默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo -->
	<pluginGroups>
		<!--plugin的组织Id(groupId) -->
		<pluginGroup>org.codehaus.mojo</pluginGroup>
	</pluginGroups>

	<!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。-->
	<servers>
		<!--服务器元素包含配置服务器时需要的信息 -->
		<server>
		<!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。-->
			<id>nexus</id>
			<!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。 -->
			<username>admin</username>
			<!--鉴权密码 。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。密码加密功能已被添加到2.1.0 +。详情请访问密码加密页面-->
			<password>123456</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>
	
	<mirrors>
		<mirror>
			<id>Nexus-aliyun</id>
			<mirrorOf>central</mirrorOf>
			<name>Nexus aliyun</name>
			<url>https://maven.aliyun.com/repository/central</url>
		</mirror>		
	</mirrors>

	<profiles>
        <profile>
			<!-- profile的唯一标识,可随便取名 -->
			<id>nexus-mr</id>
			<!-- 远程仓库列表 -->
			<repositories>
				<repository>
					<!-- repository的唯一标识,可随便取名 -->
					<id>nexus</id>
					<!--远程仓库URL -->
					<url>http://172.16.8.6:8082/repository/maven-public/</url>
					<releases>
						<!-- 开启releases版本的拉取和部署上传 -->
						<enabled>true</enabled>
						<!-- 检查校验和构建文件选项:always(一直),never(从不),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔) -->
						<updatePolicy>daily</updatePolicy>
						<!--当检查失败时的选项:ignore(忽略),fail(失败),warn(警告) -->
						<checksumPolicy>warn</checksumPolicy>
					</releases>
					<snapshots>
						<enabled/>false</enabled>
					</snapshots>
					<!-- 用于定位和排序构件的仓库布局类型选项:default(Maven2及Maven3的默认布局)、legacy(Maven1的布局,基本不用) -->
					<layout>default</layout>
				</repository>

				<repository>
					<id>central</id>
					<url>https://maven.aliyun.com/repository/central</url>
					<releases><enabled>true</enabled></releases>
					<snapshots><enabled>true</enabled></snapshots>
				</repository>
			</repositories>
				<!-- 插件仓库列表,结构和repositories类似 -->
				<pluginRepositories>
					<pluginRepository>          
						<id>nexus</id>
						<url>http://172.16.8.6:8082/repository/maven-public/</url>
						<releases><enabled>true</enabled></releases>
						<snapshots><enabled>true</enabled></snapshots>
					</pluginRepository>

					<pluginRepository>          
						<id>central</id>
						<url>https://maven.aliyun.com/repository/central</url>
						<releases><enabled>true</enabled></releases>
						<snapshots><enabled>true</enabled></snapshots>
					</pluginRepository>
				</pluginRepositories>
		</profile>

		<profile>
			<id>jdk-1.8</id>
			<!-- 激活profile的条件 -->
			<activation>
				<activeByDefault>true</activeByDefault>
				<!-- 当匹配检测到jdk1.8则该profile被激活 -->
				<jdk>1.8</jdk>
			</activation>
			<properties>
				<maven.compiler.source>1.8</maven.compiler.source>
				<maven.compiler.target>1.8</maven.compiler.target>
			</properties>
		</profile>
	</profiles>

	<activeProfiles>
		<!-- 激活环境配置,activeProfile 配置了则会忽略 activeByDefault 的配置项,activeProfile优先级高于 activeByDefault --> 
		<activeProfile>nexus-mr</activeProfile>
	 </activeProfiles>
</settings>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值