私服

简介

  • 公司在自己的局域网内搭建自己的远程仓库服务器,称为私服。
  • 私服服务器即是公司内部的maven远程仓库,每个员工的电脑上安装maven软件并且连接私服服务器,员工将自己开发的项目打成jar并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。
  • 当多人项目开发的时候,尤其聚合项目开发,项目和项目之间需要有依赖关系,通过maven私服,可以保存互相依赖的jar包,这样的话就可把多个项目整合到一起。
  • 众所周知,在使用maven时,在局域网中搭建私服,可以有效的节省互联网的带宽,加快项目的构建速度,因此在开发中,搭建私服得到了广泛的运用。

Maven

搭建私服环境

下载nexus

安装nexus

  • Nexus2需要安装:
    • cmd进入nexus的bin目录,执行:nexus.bat install
    • 安装后,系统服务中会出现nexus服务
  • Nexus3不需要安装

卸载nexus

  • Nexus2卸载:
    • cmd进入nexus的bin目录,执行:nexus.bat uninstall
  • Nexus3直接删除nexus3的文件就行

启动nexus

  • Nexus2启动服务方法1:
    • cmd进入bin目录,执行:nexus.bat start
  • Nexus2启动服务方法2:
    • windows服务中直接启动nexus服务
  • Nexus3启动服务方法:
    • cmd进入bin目录中,执行:nexus.exe /run

如何验证是否启动成功

  • 查看nexus的配置文件conf/nexus.properties
# Jetty section
application-port=8081  	# nexus的访问端口配置
application-host=0.0.0.0 	# nexus主机监听配置(不用修改)
nexus-webapp=${bundleBasedir}/nexus 	# nexus工程目录
nexus-webapp-context-path=/nexus	 # nexus的web访问路径

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus   # nexus仓库目录
runtime=${bundleBasedir}/nexus/WEB-INF  # nexus运行程序目录

访问Nexus

  • Nexus2的访问地址:http://localhost:8081/nexus/
  • Nexus3的访问地址:http://localhost:8081
  • 使用Nexus内置账户admin/admin123登陆

私服仓库类型

Nexus2的仓库

Maven

nexus的仓库有4种类型

  • nexus仓库默认在sonatype-work目录中
    1. hosted,宿主仓库,部署自己的jar到这个类型的仓库,包括releasessnapshot两部分,Releases公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
    2. proxy,代理仓库,用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件。
    3. group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组。
    4. virtual(虚拟):兼容Maven1 版本的jar或者插件

仓库作用

  • Releases: 这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.
  • Snapshots:这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.
  • 3rd Party:顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛,没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rdparty仓库。

Maven用到的Repositories说明

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

将项目发布到私服

  • 首先需要在Maven的setting.xml文件中添加配置
  <server>
      <!--对应仓库ID-->
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
  </server>
  <server>
      <!--对应仓库ID-->
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
  </server>
  • 下面内容,上传哪个项目,就在哪个项目pom.xml文件中添加配置。
    注意:这里url地址Nexus2和Nexus3不同。在查看仓库页面中,每个仓库后面有对应的URL地址
  <!-- 配置远程发布到私服,mvn deploy -->
  <distributionManagement>
      <repository>
          <id>releases</id>
          <url>http://localhost:8081/nexus/content/repositories/releases/</url>
      </repository> 
      <snapshotRepository>
          <id>snapshots</id>
          <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
      </snapshotRepository> 
  </distributionManagement>

发布

  • 然后运行Maven的deploy命令,要运行pom.xml文件有上面配置的项目,不同开发工具会有差异。
  • 如果<version>1.0-SNAPSHOT</version>则自动部署到 snapshotRepository
  • 反之部署到repository
  • 如果所有配置正确,发现上传私服失败,需要进入私服找到指定仓库(一般不用)
  • Repository—Access Settings—Deployment Policy修改为允许发布

从私服下载jar包

  • 下载需要在Maven的setting.xml文件中添加配置
    注意:这里url地址Nexus2和Nexus3不同。在查看仓库页面中,每个仓库后面有对应的URL地址
  <profile>
      <id>dev</id>
      <repositories>
          <repository>
              <id>nexus</id>
              <name>nexus</name>
              <url>http://localhost:8081/nexus/content/groups/public/</url>
              <releases>
              <enabled>true</enabled>
          </releases>
              <snapshots>
                  <enabled>true</enabled>
              </snapshots>
          </repository>
      </repositories>
      <pluginRepositories>  
          <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
          <pluginRepository>  
          <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
              <id>public</id>  
              <name>Public Repositories</name>  
              <url>http://localhost:8081/nexus/content/groups/public/</url>  
          </pluginRepository>  
      </pluginRepositories>  
  </profile>

激活私服

  • 也在Maven的setting.xml文件中添加配置
  <!-- 激活 -->
  <activeProfiles>
      <activeProfile>dev</activeProfile>
  </activeProfiles>

注意:

  • 私服一般安装在内网的其他服务器上,而不是本机上。
  • 因此上面的配置中localhost的部分在实际情况中应该修改为公司中内网的私服服务器地址。

参考

【张龙豪博客】


转载请注明:Memory的博客 » 点击阅读原文

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦