简明 SONATYPE NEXUS 私有库搭建配置说明

本贴最后更新于 2728 天前,其中的信息可能已经时移世改

缘由

  • 持续集成 jenkins 框架需要配合
  • 私库上传自有包
  • 避免中央仓库网络条件不行包下载失败,且外网中断时也可以正常运行
  • 节约公司网络带宽
  • 加速包下载

步骤

  • 先安装 jdk8,配置环境变量
  • 下载程序包 nexus-3.3.1-01-unix.tar.gz【nexus oss 版本】
  • 上传到/usr/local 目录,解压,进入到 bin 目录执行启动脚本,这里的&意思是作为后台进程运行
tar -cxvf nexus-3.3.1-01-unix.tar.gz
mv nexus-3.3.1-01-unix.tar.gz nexus331
cd nexus331/bin
./nexus run &
  • 执行后,会打印很多启动信息。启动完成后访问:服务器地址:8081,nexus 的默认端口是 8081,有两个默认用户 admin(密码 admin123)、anonymous(匿名用户,只能查看)。
  • 关闭 nexus
./nexus stop[关闭nexus]

登录,大概是这样:

6e78511f552e43ce828f1448b3231fd5-60930164439.jpeg

本地设置

  • 安装好以后,需要与本地做关联。那么,这个关联要怎样体现呢?一是本地 maven 的 settings.xml 文件,,二是工程的 pom.xml 文件。
  • 一、maven 配置文件:settings.xml,该文件作用在于定位主库地址,如果仅仅需要从私库 download 资源,将使用的镜像替换为主库地址即可。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--定义本地仓库代码 -->
<localRepository>D:\userfulsoftware\mnrepository</localRepository>
	

 <!--使用用户名、密码进行权限认证 -->
  <servers>
<server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
	<server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>
  <!--私有仓库主库地址 -->
  <mirrors>
	<mirror>   
      <id>nexus</id>   
      <mirrorOf>*</mirrorOf>   
      <url>http://xx.xx.xx.xx:8081/repository/maven-public/</url>   
    </mirror>   
  </mirrors>
</settings>
  • 二、工程的 pom.xml,在文件内加入,作用是有 jar 包源码,或者是自己开发的私有 jar 包,可以在 pom.xml 中添加如下配置,加完之后可以将本地的 jar 包部署到 maven 库中,当然,当有多个 repository 时,可以在 mvn 命令参数中设定,在后面会提到。
    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Releases</name>
            <url>http://xx.xx.xx.xx:8081/repository/maven-releases</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Snapshot</name>
            <url>http://xx.xx.xx.xx:8081/repository/maven-snapshots</url>
        </snapshotRepository>
    </distributionManagement>

上传 jar 包到 NEXUS 私服

  • 以 idea 为例,在下方 terminal 选项卡中,跳转到工程后,有两种情况:
    上传本工程到 NEXUS 私服,键入命令
mvn clean deploy -Dmaven.test.skip=true
  • 将本工程打包,分发至本地仓库及 NEXUS 私服。

  • 上传已有 jar 包,如 oracle 的 ojdbc6.jar,此包在中央仓库是没有的,因此需要作为私有包上传到 NEXUS 私服,键入命令:

mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.2.0 -Dpackaging=jar -Dfile=lib\ojdbc6.jar -Durl=http://xx.xx.xx.xx:8081/repository/maven-releases -DrepositoryId=nexus-releases
  • 其中-Dfile=lib\ojdbc6.jar 这个是本地的文件,lib\ojdbc6.jar 是文件路径,上传私库后本地的文件就可以删除了。
  • -Durl=http://xx.xx.xx.xx:8081/repository/maven-releases 这个路径,是私库中用来存放稳定版本 Jar 包的路径。
  • -DrepositoryId=nexus-releases 这个参数对应 pom.xml 里的 respository

结语

  • 在进行开发工作的时候,因为墙的存在,很多人会将 manven 中央仓库换为国内的镜像仓库,以避免依赖下载不了,网络时断时续。然而,更方便的做法是在内网架构一台私有仓库服务器,既去除了断网的风险,又可以轻松的上传自己的私有包,同时可以和其他的一些工具结合使用【比如 CI 工具】,大大提升工作效率,减少重复性劳动。
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 302 关注
  • Nexus
    13 引用 • 20 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...