nexus搭建maven仓库管理

一 前提准备

1 maven环境 3.5+,java环境 1.8+。

##maven环境变量


M2_HOME                                                    ##创建maven环境变量  
F:\Mysoft\maven\apache-maven-3.5.2-bin\apache-maven-3.5.2  ##安装路径 bin文件夹父目录

%M2_HOME%\bin;                                             ##加入path

2 安装好nexus3 window安装nexus(maven私服)

二 实现目标

1 配置maven本地仓库

2 配置远程仓库

名称 类型 作用
仓库组(group) maven2-group 虚拟仓库组,用于集中管理仓库
第三方依赖仓库(3dr) maven2-hosted 本地仓库,用于管理公网无资源的第三方jar,例如oracle驱动
稳定发行仓库(releases) maven2-hosted 本地仓库,用于管理稳定发行的jar
内测快照仓库(snapshots) maven2-hosted 本地仓库,用于管理内测发行的jar
代理中央仓库(proxy) maven2-proxy 代理中央仓库,用于指定公网仓库地址,例如指定阿里云maven中央仓库

3 配置使用maven私服,以及发布下载jar

三 架构图

1、结构图

如图:为maven-nexus-proxymaven的交互架构图
      蓝色虚线为使用外网代理私服的路线
      红色虚线为使用内网资源转移下载路线


##外网

maven本地仓库 指定本地位置缓存下载的jar  默认为官方中央仓库 可配置为私服代理(阿里私服)
nexus私服仓库 通过代理仓库下载缓存jar 提供给局域网内各个maven资源
maven本地仓库 可以通过发布jar到nexus私服进行管理 提供给其他用户使用

##内网

maven本地仓库 指定本地位置缓存下载的jar 必须配置私服 否则下载时超时
nexus私服仓库 通过代理仓库下载缓存jar 如果内网有穿透的机子可以使用代理,若无则要通过存储媒介在外网下载jar后 内网上传至nexus私服仓库 提供给局域网内各个maven资源
maven本地仓库 可以通过发布jar到nexus私服进行管理 提供给其他用户使用

2 部署图

##根据开发规范细分私服如上

1、3rd 私服本地库:用于存放三方包,包括oracle驱动,公司外部支持jar
2、releases 私服本地库:用于存放稳定版本的jar 内网环境下可以上传外网下载的jar
3、snapshots 私服本地库:用于存放内测版本的jar 可以设置更新策略为实时
4、proxy  私服代理库:用于存放外网中央仓库地址 内网环境下一般不存在
5、group  私服公共库:将多个库虚拟成一个库 供方便引用和管理

注意:开发上传外网资源可以存在稳定版本release库,则公司内部jar在内网中如同外网jar
      开发正在开发的小版本库可以上传内测snapshot库,一般情况使用svn去管理
      开发使用的公司外部jar,需要上传3rd库,以便其他用户下载
      开发下载插件和依赖jar均使用公共库group即可

 四 配置nexus

1、检测maven环境

mvn -v          ##需要配置 JAVA_HOME,M2_HOME

2、启动nexus并登陆

http://localhost:8082/   ##nexus服务ip:port 账号密码默认 admin admin123

 

如果不修改默认有4个库  1个proxy,1个group,1个release和1个snapshot,3rd在低版本有 nexus3默认没有了 

如果需要使用,需要按实际情况配置,一下可选为*

(1)* 配置仓库 

可点击新建仓库(略)

(2)* 配置proxy

点击maven-central 进入配置

配置外网代理maven仓库,例如 http://maven.aliyun.com/nexus/content/groups/public/ 阿里云

选择缓存文件位置,默认只有一个在nexus安装路径 

(3)配置maven-snapshot和maven-release

启用maven-snapshot与maven-release发布功能 (snapshot修改相同)

(4)*配置maven-public仓库  

可以将现有仓库聚合

3、*配置用户

用户默认为admin,admin123

 

(1)* 新增一个zhangsan

五 配置maven

(如果配置在maven setting中则为全局配置  如果配置为项目pom中则为项目配置)

1、修改maven setting.xml配置

##文件坐标
F:\mysoft\apache-maven-3.5.2-bin\apache-maven-3.5.2\conf\setting.xml

 关键配置


<!--maven 私服管理配置-->
  <servers>
     <server>
        <id>maven-releases</id>
        <!--保持id唯一 用于引用-->
        <username>admin</username>
        <password>admin123</password>
        <!--这个密码就是你设置的密码-->
    </server>
    <server>
        <id>maven-snapshots</id>
        <!--保持id唯一 用于引用-->
        <username>admin</username>
        <password>admin123</password>
        <!--这个密码就是你设置的密码-->
    </server>
  </servers>

详细配置(可省略)

<!--maven本地仓库配置-->
<localRepository>F:\mysoft\apache-maven-3.5.2-bin\maven_repository</localRepository>


<!--maven 私服管理配置-->
  <servers>
     <server>
        <id>maven-releases</id>
        <!--保持id唯一 用于引用-->
        <username>admin</username>
        <password>admin123</password>
        <!--这个密码就是你设置的密码-->
    </server>
    <server>
        <id>maven-snapshots</id>
        <!--保持id唯一 用于引用-->
        <username>admin</username>
        <password>admin123</password>
        <!--这个密码就是你设置的密码-->
    </server>
  </servers>

 
 <!--以下是中央仓库配置 如同使用proxy指定下载点 再无私服公共仓库时直接到中央仓库下载-->
  <mirrors>
     <!--以下是默认配置,原本为注释-->
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
    <!--可以新增 配置私服公共仓库 配置阿里云公共仓库-->
  </mirrors>


 <!--以下是一般不配置 因为项目多个情况下还是使用pom文件配置最佳-->
<!--动态配置参数-->
<profiles>
    <!--各个环境配置-->
    <profile>
      <id>env-test</id>
      <!--省略 仓库分类指定,版本库刷新等,详见pom.xml-->
    </profile>
    <profile>
      <id>env-dev</id>
    </profile>
  </profiles>

<!--激活配置参数-->
  <activeProfiles>
    <activeProfile>env-dev</activeProfile>
  </activeProfiles>

2、修改项目pom.xml文件 (父pom即可)

(1)配置下载使用maven公共库maven-group

     <!--仓库配置 如同maven 配置镜像-->
     <repositories>
			<repository>
				<id>maven-public</id>
				<name>maven-public</name>
				<url>http://localhost:8082/repository/maven-public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>always</updatePolicy>
					<checksumPolicy>warn</checksumPolicy>
				</snapshots>
			</repository>
		</repositories>
       <!--插件库配置 -->
		<pluginRepositories>
			<pluginRepository>
				<id>mmaven-public</id>
				<name>maven-public</name>
				<url>http://localhost:8082/repository/maven-public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>always</updatePolicy>
					<checksumPolicy>warn</checksumPolicy>
				</snapshots>
			</pluginRepository>
		</pluginRepositories>

(2)配置发布到maven本地库 maven-releases以及maven-snapshots

       <!--配置仓库管理-->
       <distributionManagement>
            <!--设置发布稳定仓库-->
			<repository>
				<id>maven-releases</id>
                <!--id必须与setting中对应 使用setting配置用户-->
				<name>User Project Release</name>
				<url>http://localhost:8082/repository/maven-releases/</url>
			</repository>
            <!--设置发布的快照库-->
			<snapshotRepository>
				<id>maven-snapshots</id>
                <!--id必须与setting中对应 使用setting配置用户-->
				<name>User Project SNAPSHOTS</name>
				<url>http://localhost:8082/repository/maven-snapshots/</url>
			</snapshotRepository>
		</distributionManagement>

(3)使用profile(可省略)

<profiles>
	<profile>
		<id>env-dev</id>
        <!--命名唯一-->
		<repositories>
			<repository>
				<id>maven-public</id>
				<name>maven-public</name>
				<url>http://localhost:8082/repository/maven-public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>always</updatePolicy>
					<checksumPolicy>warn</checksumPolicy>
				</snapshots>
			</repository>
		</repositories>
		<pluginRepositories>
			<pluginRepository>
				<id>maven-public</id>
				<name>maven-public</name>
				<url>http://localhost:8082/repository/maven-public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>always</updatePolicy>
					<checksumPolicy>warn</checksumPolicy>
				</snapshots>
			</pluginRepository>
		</pluginRepositories>
		<distributionManagement>
			<repository>
				<id>maven-releases</id>
				<name>User Project Release</name>
				<url>http://localhost:8082/repository/maven-releases/</url>
			</repository>
			<snapshotRepository>
				<id>maven-snapshots</id>
				<name>User Project SNAPSHOTS</name>
				<url>http://localhost:8082/repository/maven-snapshots/</url>
			</snapshotRepository>
		</distributionManagement>
	</profile>
    <!--以下省略其他profile-->
</profiles>

六 使用(以idea为例)

(1)配置使用maven 

 file--》setting--》maven--》指定安装的maven

(2)使用maven工具

ctrl+shift+A   输入  maven projects  点击则右边侧边栏出现maven project管理工具

1、下载远程仓库文件

2、发布release

##
注意release版本发布  版本号必须不能以snapshot结尾

3、上传第三方文件

语法:
mvn deploy:deploy-file 
-DgroupId=                                <group-id>\包名前缀 com.公司名
-DartifactId=                             <artifact-id>\包项目名  xxx项目
-Dversion=                                <version>\包版本号      v1.0.0.1(纯数字最佳)
-Dpackaging=                              <type-of-packaging>\打包类型  一般为jar
-Dfile=                                   <path-to-file>\需要上传文件的路径   
-DrepositoryId=                           <id-to-map-on-server-section-of-settings.xml>\serverid(setting指定)
-Durl=                                    <url-of-the-repository-to-deploy>

例子:

mvn deploy:deploy-file -DgroupId=com.oracle 
 -DartifactId=jdbc -Dversion=1.0 -Dfile=ojdbc6.jar 
 -DrepositoryId=maven-release -Durl=http://ip:prot/repository/maven-releases/

未完待续。。。

猜你喜欢

转载自blog.csdn.net/qq_22211217/article/details/81075978