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>