maven_搭建私服

1. 下载nexus

下载Nexus-Bundle

https://www.sonatype.com/download-oss-sonatype

 maven_搭建私服_第1张图片

或者使用如下地址下载最新版本:

http://www.sonatype.org/downloads/nexus-latest-bundle.zip

 maven_搭建私服_第2张图片

进入bin\jsw目录,选择windows-x86-64

 maven_搭建私服_第3张图片

 maven_搭建私服_第4张图片

 

以管理员身份安装服务,启动服务后,就可以在页面中访问:

http://localhost:8081/nexus

 maven_搭建私服_第5张图片

点击右上角的log In,用户名和密码为:admin/admin123

 

2. 仓库类型介绍

  登陆Nexus,在左边菜单栏里选择Repositories,然后会出现右边的画面,右边上半部分是列出来的repository,黑体字(public repositories)是类型为grouprepository

  这里简单介绍下几种repository的类型:

Ø  hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。

Ø  proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

Ø  group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

 maven_搭建私服_第6张图片

将现有的仓库,Apache snapshots ,3dpart,central 等仓库 加入 public 组中,直接在在界面中 将右侧的仓库移左边,效果如下:

 maven_搭建私服_第7张图片

 

3. 本地仓库

我们前面讲到类型为hosted的为本地仓库,Nexus预置了3个本地仓库,分别是Releases, Snapshots, 3rd Party. 分别讲一下这三个预置的仓库都是做什么用的:

Releases:

这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到NexusReleases本地仓库. 关于符合发布后面会有介绍.

Snapshots:

  这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.

3rd Party:

顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛,没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle JDBC驱动, 这个时候我们就需要自己添加到3rdparty仓库。

 

 

4. 在项目中上传jar包到maven仓库

本例将使用deployment用户,将自己的jar包上传到release仓库。

1) nexus配置release仓库

releasesdeployment policy设置为allow

 maven_搭建私服_第8张图片

 

2) nexus配置用户:deployment

deployment为默认的用户之一,我们也可以创建新用户来操作,操作步骤一样。

在Security下面的Users中,修改deployment帐号的密码,方法是在帐号上右键,然后选择“Set Password时时状态需要为Active(默认)。密码设置为:123456

 maven_搭建私服_第9张图片

从上图可以看到deploymentconfig下的role management只有两行,权限非常少,网上都没说权限的事,导致在上传jar包的时候老报401没有权限。在这里点击右边的add按钮,添加一些权限,由于不太熟悉nexus的权限机制,因此全选添加进来。

 

3) settings.xml文件中配置用户

添加如下内容:

garydeployment

deployment

123456

Id可随便写,但后面在pom.xml中或者命令行中需要用到。

Username为前面准备好的用户名,本例使用deployment用户

Password为相应密码

 

4) 配置pom.xml

在项目的pom.xml中添加如下内容:

<distributionManagement>

       <repository>

           <id>garydeploymentid>

           <name>public repositoryname>

           <url>http://192.168.110.188:8081/nexus/content/repositories/releases/url>

      repository>

distributionManagement>

其中id为上面settings.xml中配置的idname为描述,可随意写。

Url为上传到maven仓库中的位置。

注:因为这里我们上传选择的是release仓库,因此修改项目的版本号,原始内容如下:

<groupId>com.examplegroupId>

<artifactId>apartment-rabbitmqartifactId>

<version>0.0.1-SNAPSHOTversion>

<packaging>jarpackaging>

将版本号改为0.0.1

 

5) 配置maven命令

添加一个build,选择当前工程,输入:clean deploy

 maven_搭建私服_第10张图片

运行之,(也可以cmd到工程目录,使用命令mvn clean deploy

 maven_搭建私服_第11张图片

上传成功。

nexus中查看:

 maven_搭建私服_第12张图片

注:

前面是使用的springboot默认的打包方式,打出来的包在target目录下有两个文件:

XXX.jar 11M

Xxx.original 8K

在后面使用此maven中的包时找不到包中的类。因此需要改为maven的打包方式如下:

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.pluginsgroupId>

<artifactId>maven-surefire-pluginartifactId>

<configuration>

<skip>trueskip>

configuration>

plugin>

 

plugins>

build>

因为此项目是父子结构,因此需要把这个放到父pom.xml中,本项目中的pom.xmlplugins可以删除了。这样打出来的只有一个jar文件,大小为8K

 

5. 使用命令上传jar包到maven仓库

还是上面的项目,编译完后找到jar包,使用命令上传:

mvn deploy:deploy-file -DgroupId=com.example2 -DartifactId=apartment-rabbitmq -Dversion=0.0.1 -Dpackaging=jar -Dfile=D:\apartment-parent\apartment-rabbitmq\target\apartment-rabbitmq-0.0.1.jar -DrepositoryId=gaydeployment -Durl=http://192.168.110.188:8081/nexus/content/repositories/releases

其中:groupIdartifactId可以和项目中的不一样,但使用的时候需要对应上,所以建议还是一样的好,本例中故意加了个2.

RepositoryId很重要,即前面settings.xml中配置的id,不写会报401没权限。

 

6. nexus页面中上传jar

releases仓库,选择artifact upload页签,3处选GAV Parameters4处选本地jar包,5处填写jar版本等信息,6添加,7上传。

 maven_搭建私服_第13张图片

 

7. 项目中使用私服中的jar

1. settings.xml中配置servers认证,前面已配置了。

2. 在项目的pom.xml中配置本项目将使用的私服:

<repositories>

<repository>

<id>repo-innerid>

<url>http://192.168.110.188:8881/nexus/content/groups/public/url>

<snapshots>

<enabled>trueenabled>

snapshots>

<releases>

<enabled>trueenabled>

releases>

repository>

repositories>

3. settings.xml中配置私服地址:

nexus-188

*

Nexus 188

http://192.168.110.188:8081/nexus/content/groups/public

你可能感兴趣的:(maven)