maven_搭建私服

1. 下载nexus

下载Nexus-Bundle

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

 

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

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

 

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

 

 

 

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

http://localhost:8081/nexus

 

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

 

2. 仓库类型介绍

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

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

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

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

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

 

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

 

 

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

 

 

2) nexus配置用户:deployment

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

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

 

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

 

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

添加如下内容:

<servers>

<server>

<id>garydeployment</id>

<username>deployment</username>

<password>123456</password>

</server>

</servers>

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

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

Password为相应密码

 

4) 配置pom.xml

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

<distributionManagement>

       <repository>

           <id>garydeployment</id>

           <name>public repository</name>

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

      </repository>

</distributionManagement>

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

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

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

<groupId>com.example</groupId>

<artifactId>apartment-rabbitmq</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

将版本号改为0.0.1

 

5) 配置maven命令

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

 

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

 

上传成功。

nexus中查看:

 

注:

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

XXX.jar 11M

Xxx.original 8K

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

<build>

<plugins>

<!-- <plugin> -->

<!-- <groupId>org.springframework.boot</groupId> -->

<!-- <artifactId>spring-boot-maven-plugin</artifactId> -->

<!-- </plugin> -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<configuration>

<skip>true</skip>

</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上传。

 

 

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

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

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

<repositories>

<repository>

<id>repo-inner</id>

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

<snapshots>

<enabled>true</enabled>

</snapshots>

<releases>

<enabled>true</enabled>

</releases>

</repository>

</repositories>

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

<mirror>

<id>nexus-188</id>

<mirrorOf>*</mirrorOf>

<name>Nexus 188</name>

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

</mirror>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值