maven私服:用nexus搭建企业级私有仓库

3 篇文章 0 订阅
1 篇文章 0 订阅

nexus的作用

在maven中有一个很重要的概念:仓库。在开发时有本地仓库,然后有maven的中央仓库。但对于一个企业或部门而言,却没有一个属于自己的仓库,一个企业也有自己封装的jar包和插件,本地仓库仅限每个开发者使用,中央仓库包罗万象供全球使用,但是没有为为企业提供管理自己产品的地方。引入nexus,就是为了搭建企业级的私有仓库,管理企业级依赖。下图是maven中nexus的作用图示:


nexus除了上面的作用外,还有很多好处,如节省贷款,控制和审计、部署第三方控件等,为maven的管理提供了很大的便利。

为maven提供搭建企业级私服的工具还有一些,但是常用的是sonatype公司的nexus软件。其包含jetty容器,可以自发布,实现仓库和权限管理。

nexus搭建步骤

1.       下载nexus,地址:http://www.sonatype.org/nexus/go/


2. 将下载文件拷贝到一个指定的文件夹,如:D:\maven_home\co_repository,然后解压缩,得到文件夹结构:


说明:nexus-2.11.0-02包含nexus程序,sonatype-work是nexus仓库保存jar包的默认路径。

3.设置环境变量,添加nexus的工作路径,在系统变量path前添加这段话:D:\maven_home\co_repository\nexus-2.11.0-02\bin;(windows)

注意:nexus oos版本,推荐安装的操作系统时linux,如果是unix,nexus官方文档说是可以支持。但是我用hp-ux的操作系统时,却不支持。因为%NEXUS_HOME%/bin/jsw/目录下,并没有对应hp-ux的平台启动程序。官方的说法也是推荐安装在linux上,unix下的安装未经过深度测试。

linux下可以不修改环境变量,直接在%NEXUS_HOME%/bin/目录下,执行命令:./nexus start 或./nexus stop命令,即可启动或停止程序。

4. 进入cmd命令,输入命令:nexus,可以看到如下界面:


5.命令的意思很清楚。现在开始启动,首次启动前先要执行:nexus install,将nexus服务添加到本地服务中:


然后再执行:nexusstart


6.Nexus启动后,访问网址(这里安装在本地):http://localhost:8081:nexus。得到界面:


到此,nexus安装完成。

nexus配置

使用默认仓库配置

1.登陆。点击右上角的:Log In。输入用户名密码:admin/admin123(默认)。登陆后,点击右侧的菜单栏:views/repository->Repositories,得到界面:

关于上面这个界面,先做点笔记:

上图红框中有很多仓库(repository),仓库中对应保存来自不同地方的依赖和插件。这些仓库有很多类型(type),大概有四个类型:

1)proxy,来自开源网站的一些依赖,如apache、中央仓库(central)、codehaus;

2)virtual,主要用于maven1,很少用到;

3)hosted,顾名思义,这是针对我们开发者的,我们的可以上传自己的第三方包到3rd party,上传开发或发布的包到snapshots或releases;

4)group,可配置以上三种类型的repository到一个组,配置此组就可以有组中仓库的访问权限。

2.  让本地项目到nexus仓库下载jar依赖,配置项目中的pom.xml文件。比如我这里有一个maven项目maven_part4,配置pom.xml添加以下一段代码:

<repositories>
  	<repository>
  		<id>nexus</id>
  		<name>Nexus Repositories</name>
  		<url>http://localhost:8081/nexus/content/groups/public/</url>
  	</repository>
</repositories>

注意:配置中的ID,name无限制,可以自定义。但url标签需要指定仓库的访问url。


说明:group类型的Repository是可配置的,在红框三中配置。将右侧的选项,添加到左侧,保存。所添加的仓库,在此组中就可以被访问。

3.上面步骤中,为了将远程仓库路径指向nexus的仓库路径,修改的是maven项目的pom.xml。那么,如果我们在新增项目,还是需要修改每个项目的pom.xml。为排除上面的不便,我们可以修改本地maven的配置:${user_home}/.m2/settings.xml,新增下面两段话:

3.1)在<profiles>标签中增加一个profile配置,如下:
<profile>
      <id>nexusProfile</id>
	  <repositories>
		<repository>
			<id>public</id>
			<name>Public Repositories</name>
			<url>http://localhost:8081/nexus/content/groups/public/</url>
		</repository>
		<!-- open this,can download releases version dependency-->
		<releases>
			<enabled>true</enabled>
		</releases>
		<!-- open this,can download snapshot version dependency,default is false. -->
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	  </repositories>
</profile>
3.2)在<activeProfiles>标签中,激活上面的profile配置,如下:
<activeProfiles>
    <activeProfile>nexusProfile</activeProfile>
</activeProfiles>

这样,所有本地使用此maven的项目都会指向nexus仓库了。

问题:

我配置完此项后,settings.xml并未生效。

后来是因为myeclipse中的配置未更新。Myeclipse中有两处settings.xml需要修改:一、maven路径下的setting.xml,本地所有maven都会采用此配置;二、用户路径下的settings.xml,路径${user_home}/.m2/settings.xml,修改过此配置文件,如果配置未生效,最好在myeclipse中找到此项,确认路径正确,并点击update settings,刷新配置。(就是因为这个原因,我修改过的settings迟迟不生效)

Maven继承理解:maven项目都有一个super POM,这是所有POM的父类,包含很多默认配置;然后是%M2_HOME%/conf/settings.xml,此配置的之也会融入POM,此配置针对maven程序;其次是${user_home}/.m2/settings.xml,此配置针对用户,其配置项会覆盖maven级的settings.xml,再融入POM;最后是项目的POM,针对项目的特殊性做配置。上面的四个文件共同对一个项目生效。

Profile配置理解:在一个maven项目中,可能在不同的情况下需要的运行环境有所不同。如,在开发时下我们用一套环境,在发布时我们用另一套环境;或者系统为了兼容多版本的jdk,需要做一些调整,也就需要对不同的jdk做不同的配置等。

一个profile配置,就是一个环境的特定设置,可以对同一个环境配置多个profile。

配置了profile不代表此配置就生效,profile生效有两种方式:一、用特定环境的信息触发此配置生效,用<activation>标签;二、profile可以不包含<activation> 标签,但是需要在<activeProfiles>标签中,引用profile的id,来定义指明你需要让哪些profile生效。

4.mirror的使用。

如果我们需要一个公司只管理一个自己的私有仓库,不能让开发者直接从中央仓库下载依赖,那我们需要为中央仓库设置一个镜像,将中央仓库的链接指向nexus的仓库链接。镜像配置在${user_home}/.m2/settings.xml中。在<mirrors>标签中增加如下配置:

<mirror>
      <id>nexusMirror</id>
      <mirrorOf>*</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
</mirror>

注意:这里的mirrorOf配置的是repository的ID,代表匹配ID的工厂都访问此镜像;若配置多个repositoryID,可用英文逗号分隔;若配置*号,代表maven用户中所有工厂都访问此镜像。

其次,mirror只是映射符合条件(mirrorOf指定)的仓库的URL,而与匹配仓库的其他参数无关,若要修改,需要在对应的仓库位置修改。

中央工厂配置在super POM中,工厂id为central,若只是想明确的设定某几个工厂的镜像,可以这样写,如:<mirrorOf>nexus,central</mirrorOf>

 设置管理自己仓库组

5.在nexus中,有现成的Releases和Snapshots仓库。但是一个公司中,可能有几个不同的研发部门或不同的研发组,他们需要管理自己各自的开发和发布版本。Nexus为我们提供了创建自己的仓库和访问权限的功能。

首先,点击Add,选Hosted Repository项:


弹出仓库配置界面,填写对应值,如下:


如图上,填写仓库ID、名称、Provider。Repository Policy选择是开发还是发布仓库,但我们提交本地maven项目到nexus时,我们的项目的版本会自动识别放入对应的仓库中;四是设定上传依赖的仓库路径,可以默认自动生成。

一般创建两个仓库,一个用于发布,一个用于开发。如下:


然后需要为这两个新建仓库建一个组,将对应的仓库访问权限包含在其中。创建组方式类似:点击Add,选Repository Group。填写组仓库信息,配置组包含的仓库。如下:


现在一个属于某个部门的组就定义好了。在本地开发需要做的是,将settings.xml中的nexus仓库的访问地址改成我们的MyRepositoryGroupId的发布地址。


nexus部署配置

6.在nexus中,我们可以做的工作大致有两个:一个是获取依赖,而是上传打包项目。上面已经完成了获取依赖的配置,现在是nexus的部署管理。Nexus部署涉及到权限管理,我们每次往nexus中上传项目时,需要有对应的用户名和密码。此配置在如下位置:


对于权限管理需要配置三个地方,如上图红框所示:Privileges、Roles、Users。

6.1)首先配置privileges,将我们新建的仓库权限管理起来:

新增两个权限,一个是未开发版本库(snapshots),一个为发布版本库(releases)。如下图:


两个都新增后,如图:


6.2)创建可以访问club仓库的角色。点击Roles,进入添加角色:


点击ADD。(问题,第一次添加了privileges后,在Roles中添加权限,居然没有新增项,重启了nexus,新增数据才展示出来)。


6.3)添加用户club-user,为此用户添加club-Role角色权限。


新建用户,如下图。此用户的权限即可拥有管理项目的部署权限。


7.  完成了nexus的仓库、用户权限的配置后,需要将用户信息配置在文件中。需要配置的文件有两个。

7.1)需要配置的第一个文件:project.pom.xml。添加下面的配置,指明项目发布需要放置的仓库url:

 <distributionManagement>
  	<repository>
  		<id>club-module1-release</id>
  		<name>Club Module Release</name>
  		<url>http://10.25.119.18:8081/nexus/content/repositories/club-releases/</url>
  	</repository>
  	<snapshotRepository>
  		<id>club-module1-snapshot</id>
  		<name>Club Module1 Snapshot</name>
  		<url>http://10.25.119.18:8081/nexus/content/repositories/club-snapshots/</url>
  	</snapshotRepository>
  </distributionManagement>
7.2)配置第二个文件:${user_home}/.m/settings.xml,添加<servers>标签中添加如下配置,指明发布项目时需要的用户名密码:

<server>
      <id>club-module1-release</id>
      <username>club</username>
      <password>club123</password>
    </server>
	<server>
      <id>club-module1-snapshot</id>
      <username>club</username>
      <password>club123</password>
</server>

这样就算配完了。










  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建Maven私服可以使用Sonatype Nexus,它是一个功能强大的仓库管理器,可以帮助我们创建和管理Maven私服。下面是基于Nexus搭建Maven私服的详细步骤: 1. 准备环境:首先,确保你已经安装了Java环境,并且可以正常运行MavenNexus软件。 2. 下载和解压缩Nexus软件:从Sonatype官方网站下载最新版本的Nexus软件,并解压缩到合适的目录。 3. 启动Nexus:使用命令行窗口进入Nexus软件的目录,然后执行 `./bin/nexus start` 命令来启动Nexus服务器。 4. 访问Nexus控制台:在浏览器输入 `http://localhost:8081` 访问Nexus控制台,默认用户名和密码都是 `admin`,登录成功后,可以看到Nexus的管理界面。 5. 创建Maven仓库:在Nexus控制台,点击左侧菜单的 `Repositories`,然后点击 `Create repository` 来创建新的Maven仓库。根据需要选择 `Hosted repository` 或者 `Proxy repository`,然后填写相应的配置信息,如仓库名称、URL、布局等。 6. 配置Maven项目:在你的Maven项目的pom.xml文件添加Nexus私服配置信息,包括ID、URL等,用来指定将Maven构建输出部署到Nexus仓库。 7. 部署和使用:使用 `mvn deploy` 命令将项目打包并部署到Nexus私服,当其他开发人员或者CI/CD服务器需要下载依赖时,只需要修改项目的settings.xml文件,指定Nexus私服的URL和凭据即可。 8. 其他设置:你还可以在Nexus控制台里进行其他设置,比如用户管理、访问控制、仓库代理等。 总结一下,使用Nexus搭建Maven私服非常简单,只需要几个基本的步骤即可完成。通过搭建Maven私服,我们可以有效地管理和共享项目的依赖包,提升团队的开发效率和项目的可维护性。这对于生产环境项目非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值