Nexus部署和使用(笔记)

nexus官网
https://www.sonatype.com/nexus/repository-pro

下载免费版本:

 

安装Nexus

1.下载
nexus-3.29.2-02-unix.tar.gz

2.解压
tar -xzf nexus-3.29.2-02-unix.tar.gz

3.修改配置文件(不修改默认配置可跳过这个步骤)
cd nexus-3.29.2-02
vi etc/nexus-default.properties
# 先备份一下配置文件
cp nexus-default.properties nexus-default.properties_bak0208
默认端口8081, 可以在文件里面配置

4.启动(不建议root用户启动,当然你要root启动也可以)
./bin/nexus start

配置文件 

启动 

访问 http://192.168.40.129:8081/

访问不通时关闭防火墙
查看防火墙状态
systemctl status firewalld.service
关闭防火墙
systemctl stop firewalld.service
禁用防火墙
systemctl disable firewalld.service

登陆:初始账号 admin ,密码在 /home/soft/sonatype-work/nexus3/admin.password 文件里,进去之后按提示修改

主界面:

  • maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar(Proxy)
  • maven-releases:私库发行版jar(Hosted)
  • maven-snapshots:私库快照jar(Hosted)
  • maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置(Group) 

上传自己的jar包到Nexus

1.配置maven目录->setting.xml

<server>
	  <!-- 随便设置一个id,对应pom.xml里面distributionManagement-repository的id -->
      <id>mydeploymentRepo</id>
	  <!-- nexus 账号 -->
      <username>admin</username>
	  <!-- nexus 密码 -->
      <password>123456</password>
</server>

2.配置pom.xml

<!-- 使用distributionManagement将项目打包上传到nexus私服 -->
    <distributionManagement>
        <!--正式仓-->
        <repository>
            <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
            <id>mydeploymentRepo</id>
            <!-- 这个名称自己定义 -->
            <name>Release repository</name>
            <!-- 正式仓地址 -->
            <url>http://192.168.40.129:8081/repository/maven-releases/</url>
        </repository>
        <!--快照仓-->
        <snapshotRepository>
            <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
            <id>mydeploymentRepo</id>
            <!-- 这个名称自己定义 -->
            <name>Snapshots repository</name>
            <!-- 快照仓地址 -->
            <url>http://192.168.40.129:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

.....
<build>
        <plugins>
            <!--打一个源码包, deploy之后源码包也传到nexus-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
</build>

3.打包上传

mvn deploy -Dmaven.test.skip=true

源码包效果

本地:

nexus

maven从nexus下载依赖

配置pom.xml

<repositories>
        <repository>
            <id>mydeploymentRepo</id>
            <name>nexus maven</name>
            <url>http://192.168.40.129:8081/repository/maven-public/</url>
        </repository>
    </repositories>

效果

release正式版本和snapshot快照版本区别

正式版和快照版打包发布:
maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本;
pom.xml version中有SNAPSHOT,则发布到快照库;无SNAPSHOT则发布到正式库;

配置片段:

    <groupId>com.qmy</groupId>
    <artifactId>act-sdk</artifactId>
    <!--正式版本-->
    <version>1.0.1</version>
    <!--快照版本-->
<!--    <version>1.0.1-SNAPSHOT</version>-->

aven-releases和maven-snapshots为Nexus默认自带的私有仓 

正式版本仓:

快照版本仓:

正式版本和快照版本的主要区别在于,本地获取这些依赖的机制有所不同。

  • 正式版本:构建的时候,先在本地仓库中查找是否已经有了这个依赖库,如果没有的话才会去远程仓库去拉取。如果发布一个xxx-1.1.jar到远程仓库,有一个项目依赖这个库,第一次构建会把这个jar拿到本地仓库中,以后再构建就不会去访问远程仓库了。你修改了代码发布上去,也不会再拉,本地这个库不能得到更新。除非升级这个版本 xxx-1.2.jar,然后通知项目,修改依赖为这个版本。
  • 快照版本:会优先去远程仓库中查看是否有最新的xxx-1.2.jar,如果有则下载下来使用。即使本地仓库中已经有了xxx-1.2.jar,它也会尝试去远程仓库中查看同名的jar是否是最新的。在配置Maven的Repository的时候中有个配置项,可以配置对于SNAPSHOT版本向远程仓库中查找的频率。频率共有四种,分别是always、daily、interval、never。当本地仓库中存在需要的依赖项目时,always是每次都去远程仓库查看是否有更新,daily是只在第一次的时候查看是否有更新,当天的其它时候则不会查看;interval允许设置一个分钟为单位的间隔时间,在这个间隔时间内只会去远程仓库中查找一次,never是不会去远程仓库中查找(这种就和正式版本的行为一样了)。
  • 所以一般在开发模式下,我们可以频繁的发布SNAPSHOT版本,以便让其它项目能实时的使用到最新的功能做联调;当版本趋于稳定时,再发布一个正式版本,供正式使用。当然在做正式发布时,也要确保当前项目的依赖项中不包含对任何SNAPSHOT版本的依赖,保证正式版本的稳定性。

创建自定义私有仓

选策略 maven2(hosted)

配置maven-public,将ltx加到里面,它默认包含了maven-releases、maven-snapshots、maven-central

备注:上传的话,把distributionManagement-repository的url换成 http://192.168.40.129:8081/repository/ltx/ 就行。

Nexus中央仓远程url配置为阿里云

  • Nexus默认远程仓库为https://repo1.maven.org/maven2/
  • 阿里云代理仓库:http://maven.aliyun.com/nexus/content/groups/public/

私有库下载过的依赖,会在私有库缓存起来,开发连接私有库可不用远程下载,直接走的私有库下载,速度会快一些

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小绿豆

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值