Maven仓库核心配置

一、首先在IDE中配置maven的localrepository与settings.xml的路径:


  

二、然后看settings.xml的核心配置:


  2.1 地仓库必须配置

	<!-- 设置本地仓库路径 -->
	<localRepository>/Users/user/Work/m3/repository</localRepository>

  2.2 远程仓库之中央仓库可选择性配置

      因为maven本身已经配置了中央仓库(${M2_HOME}/lib/maven-2.0.10-uber.jar ,打开该文件,能找到超级POM:/org/apache/maven/project/pom-4.0.0.xml ,它是所有MavenPOM的父POM,所有Maven项目继承该配置),但是由于服务器在国外,比较慢,所以我们可以配置一个国内的镜像仓库:

  2.3 远程仓库之私服(nexus必须配置,可以配置在settings.xml文件,也可以配置在项目的pom文件中(一般配在pom中,比较灵活)。至于如何在settings.xml中与pom中配置远程仓库,下面会给出示例。

  注:配置远程仓库都是为了从仓库拉取jar用的,与上传(deploy)无关;而且还要注意如下相关配置,表示是否可以拉去snapshots/releases版本的jar包。

  一般规则为这样:如果是外部远程仓库(例如中央仓库)一般releases配true,snapshots配false,防止由于snapshots版本组件由于不稳定引发问题。如果是本地开发时用的私服,我们都配成true即可,方便开发。需要注意,snapshots默认是为false的,如果开发的时候想下载snapshots类型的组件,必须显式配置为true

	<releases>
		<enabled>true</enabled>
	</releases>
	<snapshots>
		<enabled>false</enabled>
	</snapshots>

  2.4  上面配置的中央仓库还有nexus都是拉取组件用的,如果想上传(deploy组件到远程仓库,需要配置两步:

  (1)在项目的pom中配置distributionManagement节点,如下:

	<distributionManagement>
		<repository>
			<id>acfunRepo</id>
			<url>http://nexus.acfun.tv/nexus/content/repositories/AcFun-Release/</url>
		</repository>
		<snapshotRepository>
			<id>acfunRepo</id>
			<url>http://nexus.acfun.tv/nexus/content/repositories/AcFun-Snapshot/</url>
		</snapshotRepository>
	</distributionManagement>

  (2)在settings.xml文件中配置所上传到的仓库的用户名密码(server节点)

	
	<servers>
		<server>
			<id>acfunRepo</id>
			<username>acfun</username>
			<password>acfun123</password>
		</server>
	</servers>

  这里需要特别注意: server.id  必须与 pom 中配置 distributionManagement 下的 repository.id 相同 ,如上面都为 acfunRepo

 

三、下面介绍如何在settings.xml中与pom中配置远程仓库【接上面的2.3】

  这里的远程仓库一般指的是中央仓库或者私服,是拉取组件用的仓库。二者都既能配置在settings.xml文件,也可以配置在项目的pom文件中。但是,如果配置中央仓库,则建议配置在settings文件中,方便大家共用;如果配置私服(nexus),则建议配置在项目的pom中,方便保持项目的灵活性。

  下面则以私服(nexus)为例,展示分别在settings.xml中与pom中的配置方法:

  3.1 在pom中配置(比较简单)

	
	<project>
		......
		<repositories>
			<repository>
				<id>acfunnexus</id>
				<url>http://nexus.acfun.tv/nexus/content/groups/public/</url>
				<layout>default</layout>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
		</repositories>
		......
	</project>

  3.2 在settings.xml中配置(需要两步)

  它不支持pom中的中的<repositories>及<pluginRepositories>元素,所以我们需要利用profileactiveProfile节点来完成,如下:

	 <settings>  
	   ...   
	   <profiles>  
	     <profile>  
	       <id>dev</id>  
	       <!-- repositories and pluginRepositories here-->  
	     </profile>  
	   </profiles>  
	   <activeProfiles>  
	     <activeProfile>dev</activeProfile>  
	   </activeProfiles>  
	   ...   
	 </settings> 

四、总结


pom中主要仓库配置如下:

<project>
	......
	<!-- deploy组件的仓库配置,注意id需要与settings.xml中的server节点的id匹配--> 
	<distributionManagement>
		<repository>
			<id>acfunRepo</id>
			<url>http://nexus.acfun.tv/nexus/content/repositories/AcFun-Release/</url>
		</repository>
		<snapshotRepository>
			<id>acfunRepo</id>
			<url>http://nexus.acfun.tv/nexus/content/repositories/AcFun-Snapshot/</url>
		</snapshotRepository>
	</distributionManagement>
	
	<!-- 拉去组件的私服(nexus)仓库配置--> 
	<repositories>
		<repository>
			<id>acfunnexus</id>
			<url>http://nexus.acfun.tv/nexus/content/groups/public/</url>
			<layout>default</layout>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>
	......

</project>


settings.xml中的主要配置:

<settings>

	......
	
	<!-- 本地仓库配置--> 
	<localRepository>/Users/user/Work/m3/repository</localRepository>
	
	<!-- deploy组件的仓库server的身份验证配置,注意id需要与pom中的distributionManagement节点的repository.id匹配--> 
	<servers>
		<server>
			<id>acfunRepo</id>
			<username>acfun</username>
			<password>acfun123</password>
		</server>
	</servers>
	
	<!-- 配置国内的中央镜像仓库(可以不配置)--> 
	<profiles>  
		<profile>  
			<id>chinaCentralRepo</id>  
			<repositories>
				<repository>
					<id>maven-net-cn</id>
					<name>MavenChinaMirror</name>
					<url>http://repo2.maven.org/maven2/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>maven-net-cn</id>
					<name>MavenChinaMirror</name>
					<url>http://repo2.maven.org/maven2/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
	</profiles>
	  
	<activeProfiles>  
		<activeProfile>chinaCentralRepo</activeProfile>  
	</activeProfiles>
	
	......
</settings>


 


©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页