Linux下使用Nexus搭建Maven私服

准备工作

Nexus安装包 nexus-3.16.1-02-unix.tar.gz nexus下载地址
JDK1.8 nexus3必须使用java8及以上

安装及配置

将安装包放到/usr/local/nexus下并解压

在这里插入图片描述

  • 目录说明:
    • bin:启动脚本以及启动相关的配置文件,例如通过bin/nexus.vmoptions文件,你可以配置一些JVM参数和日志存放位置等配置
    • etc: 包含应用级别的配置文件
    • lib: 包含 Apache Karaf 相关的jar包
    • public: 包含应用相关的公共资源
    • system: 包含应用相关的构件和插件

默认端口号为8081;如需修改到以下路径

记得查看防火墙端口的8081是否开启,没有的话需要开启8081端口。

在这里插入图片描述

修改nexus3数据以及相关日志的存储位置

在这里插入图片描述

设置当前用户可以打开的文件总数为65536

在这里插入图片描述
在这里插入图片描述

配置nexus以服务的形式启动,并且开机自启

配置环境变量,添加NEXUS_HOME

打开bash_profile
编辑bash_profile
重新加载bash_profile

修改$NEXUS_HOME/bin/nexus.rc

修改nexus.rc

修改$NEXUS_HOME/bin/nexus

nexus文件位置
注入jdk

做一个$NEXUS_HOME/bin/nexus到/etc/init.d/neuxs的软连接

软连接

使用systemd,创建自启动service

在/etc/systemd/system/下新建文件nexus.service
如需设置权限——chmod 775 nexus.service

新建nexus.service
编辑nexus.service内容
编辑nexus.service内容
重新加载
重新加载
开启nexus的service服务
开启nexus的service服务
运行nexus.service
运行nexus.service
查看nexus运行状态
查看nexus运行状态

Nexus仓库的分类

Nexus仓库的分类
Maven可以直接从宿主仓库下载构件,也可以从代理仓库下载构件,代理仓库会间接的从远程仓库下载并缓存构件,为了方便,maven也可以从仓库组下载构件,而仓库组没有实际内容,它会转向其包含的宿主仓库或者代理仓库获得实际构件的内容。

登录Nexus Web UI

管理员默认账户密码为admin/admin123
Nexus web url
Sign In

查看内置仓库

查看内置仓库

  • nexus自带的部分仓库的说明:
    • maven-central:代理仓库,该仓库代理Maven中央仓库,策略为release,因此只会下载和缓存中央仓库中的发布版本的构件。
    • maven-releases: 宿主仓库,策略为release,用来部署组织内部的发布版本的构件。
    • maven-snapshots:宿主仓库,策略为snapshots,用来部署组织内部的快照版本的构件。
    • maven-public:仓库组,包含了以上3个仓库

Nexus操作

创建用户

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建宿主仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建代理仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建仓库组

在这里插入图片描述
在这里插入图片描述

配置maven从Nexus下载构件

pom如下:

<repositories>
    <repository>
        <id>nexus</id>
        <name>nexus</name>
        <url>http://192.168.208.3:8081/repository/root-group-test-repository/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <name>nexus</name>
        <url>http://192.168.208.3:8081/repository/root-group-test-repository/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

你可以从nexus页面上获得仓库的url
获取url地址

在pom中的id、name不需要与仓库中的对应,但url一定要一样,在pom中,多个仓库的id一定是不同的,例如下配置了多个仓库,那么这些仓库的id一定要不同,但是和下可以共用一个仓库

以上配置只在当前的项目中生效,如果想让你本地的所有的maven项目都去自定义的私服下载构件,需要在settings.xml中配置如下:

<profiles>
	<!--添加私服-->
	<profile>
		<repositories>
			<repository>
				<id>nexus</id>
				<name>nexus</name>
				<url>http://192.168.208.3:8081/repository/root-group-test-repository/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
			</repository>
			
		</repositories>
		<pluginRepositories>
			<pluginRepository>
				<id>nexus</id>
				<name>nexus</name>
				<url>http://192.168.208.3:8081/repository/root-group-test-repository/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
			</pluginRepository>
			
		</pluginRepositories>
	</profile>
  </profiles>

  <!--启用私服-->
  <activeProfiles>
	<activeProfile>nexus</activeProfile>
  </activeProfiles>

在profile中配置的私服确实可以作用于本地所有的maven项目,但是maven除了会去私服中下载构件,也会去maven中央仓库中下载,如果我们想要配置maven的下载请求仅仅通过nexus,以全面发挥私服的作用,这就需要在级别添加配置了(在profile配置的基础上再在mirror上添加配置),settings.xml中的内容如下:

 <mirrors>
	<mirror>
		<id>nexus</id>
		<url>http://192.168.208.3:8081/repository/root-group-test-repository/</url>
		<!-- * 代表这个私服可以作为所有远程仓库的镜像 -->
		<mirrorOf>*</mirrorOf>
	</mirror>
  </mirrors>

部署构件到Nexus

项目中的pom配置如下

<!--部署构建到nexus-->
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <name>nexus-releases</name>
        <url>http://192.168.208.3:8081/repository/root-hosted-test-repository/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshot</id>
        <name>nexus-snapshot</name>
        <url>http://192.168.208.3:8081/repository/root-hosted-test-repository-snapshot/</url>
    </snapshotRepository>
</distributionManagement>

这里设置了两个仓库,一个用于部署发布版构件,一个用于部署快照版构件,用于部署快照版构件的仓库我们在之前演示创建仓库的时候没有创建,你需要自己创建一个,另外无论是部署快照版构件还是部署发布版构件,都是需要部署到宿主类型的仓库中,而我们之前配置的下载构件的仓库是一个仓库组,这里需要注意一下。

另外,nexus仓库对于匿名用户是只读的,所以还需要在settings.xml中配置认证信息,如下:

  <servers>
	<server>
		<id>nexus-release</id>
		<username>root</username>
		<password>123456</password>
	</server>
	<server>
		<id>nexus-snapshot</id>
		<username>root</username>
		<password>123456</password>
	</server>
  </servers>

然后在项目根目录下执行maven命令mvn deploy即可,如果想在任意路径下部署某个已经打好的jar包,完整的maven命令如下:

mvn deploy:xxxxx -DgroupId=com.test -DartifactId=nexus -Dversion=1.0.0 -Dpackaging=jar -Dfile=/path/to/mynexus-1.0.0.jar -Durl=http://192.168.283.3:8081/repository/root-hosted-test-repository\ DrepositoryId=xxx

除了使用 maven 命令,还可以使用nexus WEB 界面来手动上传第三方jar包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为项目分配独立的仓库

新建仓库

假设项目名称为devops,新建两个宿主仓库devops-releases和devops-snapshot分别用于部署devops项目的发布版构件和快照版构件,过程不再赘述
在这里插入图片描述

创建权限

创建用于管理这两个仓库的权限(这里只演示为devops-releases仓库创建权限)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建角色并关联权限

在这里插入图片描述
在这里插入图片描述

创建用户,赋予角色

在这里插入图片描述

在pom中配置部署构件的仓库

<distributionManagement>
    <repository>
        <id>devops-release</id>
        <name>devops-release</name>
        <url>http://192.168.208.3:8081/repository/devops-release/</url>
    </repository>
    <snapshotRepository>
        <id>devops-snapshots</id>
        <name>devops-snapshots</name>
        <url>http://192.168.208.3:8081/repository/devops-snapshot/</url>
</snapshotRepository>
</distributionManagement>

在 settings.xml中配置认证信息

 <servers>	
<server>
		<id>devops-release</id>
		<username>devops</username>
		<password>devops</password>
	</server>
	<server>
		<id>devops-snapshot</id>
		<username>devops</username>
		<password>devops</password>
	</server>
  </servers>

这样就能把bonc项目的构件发布到专属的两个仓库中,而其他用户(没有设置管理这两个仓库权限或角色的用户)是不能部署构件到这两个仓库中的,当然了系统级别的用户(admin和上文创建的hadoop用户是可以的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值