1.  私服搭建

Maven可以允许在多个地方配置仓库的位置,比如pom文件、Maven配置文件等。当需要加载一个新的Jar包时,Maven会从配置文件中读取仓库位置,并按照优先级逐一从仓库中判断是否有指定的依赖文件,如果有,则加载,如果没有,则继续搜索。经过实验,得知了其加载顺序。

    1、本地仓库     2、maven settings profile中的repository;     3、pom.xml中profile中定义的repository;     4、pom.xml中的repositorys(定义多个repository,按定义顺序找);     5、mirror  

公司创建内网maven库_xml

下载:https://help.sonatype.com/repomanager3/download

安装

配置完成后,打开cmd,进入nexus-3.14.0-04-win64\nexus-3.14.0-04\bin下。

执行:nexus.exe /run

最后经过一大轮的日志打印,最后出现如下界面,说明nexus私服已经搭建好了

公司创建内网maven库_公司创建内网maven库_02

启动成功后,默认用户名admin 密码:admin123

端口:默认8081

 废话不多说,访问路径:127.0.0.1:8081/

公司创建内网maven库_jar_03

 

2. component的介绍

公司创建内网maven库_xml_04

 

 

component name的一些说明:  - maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar  - maven-releases:私库发行版jar  - maven-snapshots:私库快照(调试版本)jar  - maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

component type的一些说明:  - hosted:类型的仓库,内部项目的发布仓库  - releases:内部的模块中release模块的发布仓库  - snapshots:发布内部的SNAPSHOT模块的仓库  - 3rd party:第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去  - proxy:类型的仓库,从远程中央仓库中寻找数据的仓库 

公司创建内网maven库_公司创建内网maven库_05

 

 

3.  操作一: 将项目上传到私服

第一步: 需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户和密码 。

此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致

<servers>
  <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
      <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

 

公司创建内网maven库_公司创建内网maven库_06

第二步: 配置项目pom.xml

配置私服仓库的地址,本公司的自己的jar包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库.

<distributionManagement>
  <repository>
    <id>releases</id>
    <url>http://127.0.0.1:8081/repository/maven-releases/</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>

注意:pom.xml这里<id> 和 settings.xml 配置 <id> 对应!,url直接如下图复制.

 

公司创建内网maven库_公司创建内网maven库_07

 第三步:deploy 发布到服务器

 

4.  操作二: 从私服下载 jar

第一步 修改settings.xml.

1、 配置mirror.除了配置自己的镜像外,配置一些其他的国内镜像可以下载速度.

<mirrors>
       <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://127.0.0.1:8081/repository/maven-public/</url>
        </mirror>
        <mirror>
            <!--This sends everything else to /public -->
            <id>ali</id>
            <mirrorOf>*</mirrorOf> 
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
        <mirror>
            <id>nexus-public-snapshots</id>
            <mirrorOf>public-snapshots</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
        </mirror>
	<mirror>
	    <id>ui</id>
	    <mirrorOf>central</mirrorOf>
	    <name>Human Readable Name for this Mirror.</name>
	    <url>http://uk.maven.org/maven2/</url>
	</mirror>
	<mirror>
            <id>osc</id>
            <mirrorOf>central</mirrorOf>
            <url>;
        </mirror>
        <mirror>
            <id>osc_thirdparty</id>
            <mirrorOf>thirdparty</mirrorOf>
            <url>;
        </mirror>
  </mirrors>

2、 配置profile ,激活

 

<profiles>
    <!--profile的id-->
	 <profile>
			<id>prd</id>  
			<repositories>  
			  <repository> 
				<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
				<id>nexus</id>  
				 <!--仓库地址,即nexus仓库组的地址-->
				<url>http://127.0.0.1:8081/repository/maven-public/</url>  
				<!--是否下载releases构件-->
				<releases>  
				  <enabled>true</enabled>  
				</releases>  
				<!--是否下载snapshots构件-->
				<snapshots>  
				  <enabled>true</enabled>  
				</snapshots>  
			  </repository>  
			</repositories> 
			 <pluginRepositories> 
			<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
				<pluginRepository> 
				   <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
					<id>public</id> 
					<name>Public Repositories</name> 
					<url>http://127.0.0.1:8081/repository/maven-public/</url> 
				</pluginRepository> 
			</pluginRepositories> 
	</profile> 
    <profile>
            <!--this profile will allow snapshots to be searched when activated-->
            <id>dev</id>
           <repositories>  
			  <repository> 
				<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
				<id>snapshots</id>  
				 <!--仓库地址,即nexus仓库组的地址-->
				<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>  
				<!--是否下载releases构件-->
				<releases>  
				  <enabled>true</enabled>  
				</releases>  
				<!--是否下载snapshots构件-->
				<snapshots>  
				  <enabled>true</enabled>  
				</snapshots>  
			  </repository>  
			</repositories> 
             <pluginRepositories> 
			<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
				<pluginRepository> 
				   <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
					<id>snapshots</id> 
					<name>Public Repositories</name> 
					<url>http://127.0.0.1:8081/repository/maven-snapshots/</url> 
				</pluginRepository> 
			</pluginRepositories> 
        </profile>
  </profiles>

 <activeProfiles>
    <activeProfile>dev</activeProfile>
	<activeProfile>prd</activeProfile>
  </activeProfiles>

之前本地没有jar 去中央仓库下载,将所有路径* 映射到私服上,都去私服下载

 

公司创建内网maven库_jar_08

将所有中央操作访问,都映射到私服 ,激活配置 !

,不用私服,将settings.xml 私服配置注释掉!!!

第二步 删除本地仓库中的jar

第三步 update 工程,会去私服下载jar.

 

参考:

setting.xml 配置详解:

maven配置setting.xml文件、POM.xml详解: