使用Nexus搭建Maven私服的方法步骤

序言

maven私服类似.net中的nuget包服务器

官网/版本收费

首先要吐槽官网慢的一比,下载不下来。

地址:https://www.sonatype.com/

下载地址:https://www.sonatype.com/download-nexus-repo-oss

版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版。

简介

nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问.

nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据

nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用

nexus支持webDAV与LDAP安全身份认证.

nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库.

为什么使用

  • 节省外网带宽。
  • 加速Maven构建。
  • 部署第三方构件。
  • 提高稳定性,增强控制。
  • 降低中央仓库的负荷。
  • 控制和审计
  • 建立本地内部公用仓库

私服仓库的工作流程

Nexus仓库类型介绍

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

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

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

管理本地仓库

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

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

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

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

Windows上安装Nexus

我装的版本

官方安装文档:https://help.sonatype.com/repomanager3/installation/installation-methods

免安装的,下载下来,解压直接运行即可。

1.解压

2.配置下环境变量

3.运行起来即可

命令集: startstoprestartforce-reload

4.校验

打开 http://localhost:8081/

出现如下界面即可,默认账号密码:admin/admin123

配置Nexus

Maven用到的Repositories说明:

maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar

maven-releases:私库发行版jar

maven-snapshots:私库快照(调试版本)jar

maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

如果不够用,自己也可以根据博文上面的仓库类型进行选用创建。

项目配置拿去不谢

<?xml version="1.0" encoding="UTF-8"?>

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

<!--
 | This is the configuration file for Maven. It can be specified at two levels:
 |
 | 1. User Level. This settings.xml file provides configuration for a single user,
 |         and is normally provided in ${user.home}/.m2/settings.xml.
 |
 |         NOTE: This location can be overridden with the CLI option:
 |
 |         -s /path/to/user/settings.xml
 |
 | 2. Global Level. This settings.xml file provides configuration for all Maven
 |         users on a machine (assuming they're all using the same Maven
 |         installation). It's normally provided in
 |         ${maven.home}/conf/settings.xml.
 |
 |         NOTE: This location can be overridden with the CLI option:
 |
 |         -gs /path/to/global/settings.xml
 |
 | The sections in this sample file are intended to give you a running start at
 | getting the most out of your Maven installation. Where appropriate, the default
 | values (values used when the setting is not specified) are provided.
 |
 |-->
<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
  | The path to the local repository maven will use to store artifacts.
  |
  | Default: ${user.home}/.m2/repository
  -->
 <localRepository>D:\Maven\repository</localRepository>

 <!-- interactiveMode
  | This will determine whether maven prompts you when it needs input. If set to false,
  | maven will use a sensible default value, perhaps based on some other setting, for
  | the parameter in question.
  |
  | Default: true
 <interactiveMode>true</interactiveMode>
 -->

 <!-- offline
  | Determines whether maven should attempt to connect to the network when executing a build.
  | This will have an effect on artifact downloads, artifact deployment, and others.
  |
  | Default: false
 <offline>false</offline>
 -->

 <!-- pluginGroups
  | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
  | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
  | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
  |-->
 <pluginGroups>
  <!-- pluginGroup
   | Specifies a further group identifier to use for plugin lookup.
  <pluginGroup>com.your.plugins</pluginGroup>
  -->
 </pluginGroups>

 <!-- proxies
  | This is a list of proxies which can be used on this machine to connect to the network.
  | Unless otherwise specified (by system property or command-line switch), the first proxy
  | specification in this list marked as active will be used.
  |-->
 <proxies>
  <!-- proxy
   | Specification for one proxy, to be used in connecting to the network.
   |
  <proxy>
   <id>optional</id>
   <active>true</active>
   <protocol>http</protocol>
   <username>proxyuser</username>
   <password>proxypass</password>
   <host>proxy.host.net</host>
   <port>80</port>
   <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
  </proxy>
  -->
 </proxies>

 <!-- servers
  | This is a list of authentication profiles, keyed by the server-id used within the system.
  | Authentication profiles can be used whenever maven must make a connection to a remote server.
  |-->
 <servers>
  <!-- server
   | Specifies the authentication information to use when connecting to a particular server, identified by
   | a unique name within the system (referred to by the 'id' attribute below).
   |
   | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
   |    used together.
   |
   -->
  <server>
   <id>release</id>
   <username>admin</username>
   <password>admin123</password>
  </server>

  <server>
   <id>snapshots</id>
   <username>admin</username>
   <password>admin123</password>
  </server>

  <!-- Another sample, using keys to authenticate.
  <server>
   <id>release</id>
   <privateKey>/path/to/private/key</privateKey>
   <passphrase>optional; leave empty if not used.</passphrase>
  </server>
  -->
 </servers>

 <!-- mirrors
  | This is a list of mirrors to be used in downloading artifacts from remote repositories.
  |
  | It works like this: a POM may declare a repository to use in resolving certain artifacts.
  | However, this repository may have problems with heavy traffic at times, so people have mirrored
  | it to several places.
  |
  | That repository definition will have a unique id, so we can create a mirror reference for that
  | repository, to be used as an alternate download site. The mirror site will be the preferred
  | server for that repository.
  |-->
 <mirrors>
  <!-- mirror
   | Specifies a repository mirror site to use instead of a given repository. The repository that
   | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
   | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
   |
  <mirror>
   <id>mirrorId</id>
   <mirrorOf>repositoryId</mirrorOf>
   <name>Human Readable Name for this Mirror.</name>
   <url>http://my.repository.com/repo/path</url>
  </mirror>
   -->
 </mirrors>

 <!-- profiles
  | This is a list of profiles which can be activated in a variety of ways, and which can modify
  | the build process. Profiles provided in the settings.xml are intended to provide local machine-
  | specific paths and repository locations which allow the build to work in the local environment.
  |
  | For example, if you have an integration testing plugin - like cactus - that needs to know where
  | your Tomcat instance is installed, you can provide a variable here such that the variable is
  | dereferenced during the build process to configure the cactus plugin.
  |
  | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
  | section of this document (settings.xml) - will be discussed later. Another way essentially
  | relies on the detection of a system property, either matching a particular value for the property,
  | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
  | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
  | Finally, the list of active profiles can be specified directly from the command line.
  |
  | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
  |    repositories, plugin repositories, and free-form properties to be used as configuration
  |    variables for plugins in the POM.
  |
  |-->
 <profiles>
  <!-- profile
   | Specifies a set of introductions to the build process, to be activated using one or more of the
   | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
   | or the command line, profiles have to have an ID that is unique.
   |
   | An encouraged best practice for profile identification is to use a consistent naming convention
   | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
   | This will make it more intuitive to understand what the set of introduced profiles is attempting
   | to accomplish, particularly when you only have a list of profile id's for debug.
   |
   | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
  <profile>
   <id>jdk-1.4</id>

   <activation>
    <jdk>1.4</jdk>
   </activation>

   <repositories>
    <repository>
     <id>jdk14</id>
     <name>Repository for JDK 1.4 builds</name>
     <url>http://www.myhost.com/maven/jdk14</url>
     <layout>default</layout>
     <snapshotPolicy>always</snapshotPolicy>
    </repository>
   </repositories>
  </profile>
  -->

  <!--
   | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
   | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
   | might hypothetically look like:
   |
   | ...
   | <plugin>
   |  <groupId>org.myco.myplugins</groupId>
   |  <artifactId>myplugin</artifactId>
   |
   |  <configuration>
   |   <tomcatLocation>${tomcatPath}</tomcatLocation>
   |  </configuration>
   | </plugin>
   | ...
   |
   | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
   |    anything, you could just leave off the <value/> inside the activation-property.
   |

  <profile>
   <id>env-dev</id>

   <activation>
    <property>
     <name>target-env</name>
     <value>dev</value>
    </property>
   </activation>

  </profile>
  -->

   <profile>
   <id>default_profile</id>
   <repositories>
    <!--包含需要连接到远程仓库的信息 -->
    <repository>
     <!--远程仓库唯一标识 -->
     <id>zhanglonghao_repo</id>
     <!--远程仓库名称 -->
     <name>zhanglonghao_repo</name>
     <!--如何处理远程仓库里发布版本的下载 -->
     <releases>
      <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
      <enabled>true</enabled>
      <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
      <updatePolicy>never</updatePolicy>
      <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
      <checksumPolicy>warn</checksumPolicy>
     </releases>
     <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
     <snapshots>
      <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
      <enabled>true</enabled>
      <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
      <updatePolicy>always</updatePolicy>
      <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
      <checksumPolicy>warn</checksumPolicy>
     </snapshots>
     <!--远程仓库URL,按protocol://hostname/path形式 -->
     <url>http://maven.zhanglonghao.work:8081/nexus/content/groups/public</url>
     <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->
     <layout>default</layout>
    </repository>
   </repositories>

   <pluginRepositories>
    <pluginRepository>
     <id>maven-net-cn</id>
     <name>Maven China Mirror</name>
     <url>http://maven.zhanglonghao.work:8081/nexus/content/groups/public</url>
     <releases>
      <enabled>true</enabled>
     </releases>
     <snapshots>
      <enabled>true</enabled>
     </snapshots>
    </pluginRepository>
   </pluginRepositories> 

  </profile>
 </profiles>

 <!-- activeProfiles
  | List of profiles that are active for all builds.
  -->
 <activeProfiles>
  <activeProfile>default_profile</activeProfile>
 </activeProfiles>

</settings>

总结

到此这篇关于使用Nexus搭建Maven私服的方法步骤的文章就介绍到这了,更多相关Nexus搭建Maven私服内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何使用nexus在局域网内搭建maven私服及idea的使用

    使用Maven进行项目的声明周期管理,方便对项目依赖和插件进行管理,同时便于项目的统一管理,提升项目开发效率.但是实际工作中会有以下问题: 1  因为安全考虑,有些公司不给开发人员提供外网.因此不能使用maven访问远程的仓库地址. 2  大家同时上网,导致网速比较慢,maven下载构件效率比较低. 3  由于版权的问题,有些第三方jar包无法从远程仓库下载. 4  有些jar包是公司内部使用的,自然也无法从远程maven仓库下载. 怎么办呢? 使用Nexus搭建私服 所谓私服,是一种特殊的远程

  • Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    一. 私服搭建及配置 1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载. 我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus.这里我们使用 Sonatype Nexus. 2 . 安装Nexus 2 .

  • 使用Nexus搭建Maven私服的方法步骤

    序言 maven私服类似.net中的nuget包服务器 官网/版本收费 首先要吐槽官网慢的一比,下载不下来. 地址:https://www.sonatype.com/ 下载地址:https://www.sonatype.com/download-nexus-repo-oss 版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版. 简介 nexus是一个强大的maven仓库管理器,它极大的简化了

  • 使用Nexus搭建Maven私服教程的方法步骤

    目录 一.基本介绍(Nexus(maven私服)) 1,如果没有搭建私服会有什么问题? 2,搭建私服的优点 3,Nexus 介绍 二.Nexus 服务的安装(推荐第二种:使用docker方式安装) 1,使用二进制发行包安装 2,使用 Docker 镜像进行安装(推荐) 三.Nexus 服务的配置 附一:Maven 配置使用私服(下载依赖) 1,基本说明 2,通过 setting.xml 文件配置 3,通过 pom.xml 文件配置 附二:Maven 配置使用私服(下载插件) 附三:Maven 配

  • Maven实战之搭建Maven私服和镜像的方法(图文)

    本文主要介绍了Maven实战之搭建Maven私服和镜像的方法(图文),分享给大家,具体如下: 准备工作 安装3.6.*的Nexus 理论 Nexus的仓库类型 hosted(宿主):宿主仓库主要用于存放项目部署的构件.或者第三方构件用于提供下载. proxy(代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件和插件然后缓存在Nexus仓库中 group(仓库组):仓库的一种组合策略,并不存在实在意义的依赖,只是作为一种中转站的作用存在. Nexus内置仓库类型 maven-centra

  • Maven搭建springboot项目的方法步骤

    Maven搭建springboot项目 本文是基于Windows 10系统环境,使用Maven搭建springboot项目 Windows 10 apache-maven-3.6.0 IntelliJ IDEA 2018.3.4 x64 一.springboot项目搭建 (1) 新建目录 在某个可用目录下,新建一个文件夹,本文新建目录为 D:\demo\zs200 (2) 创建maven父工程zs200a-parent 填写项目maven坐标 填写项目名称和路径 (2) maven父工程zs20

  • Linux环境下使用Docker搭建Jenkins容器的方法步骤

    目录 需要提前准备的条件 Step1:安装Jenkins镜像 Step2:docker启动Jenkins容器 Step3:访问Jenkins Step4:安装Jenkins插件 需要提前准备的条件 Maven环境 Docker环境 JDK环境(Centos8 自带JDK环境去除,重装的JDK) Step1:安装Jenkins镜像 用docker查询jenkins镜像 docker search jenkins 我们选择下载第二个,jenkins/jenkins,下载命令 docker pull

  • 基于docker搭建nginx文件服务器的方法步骤

    1.在本机新建配置文件docker_nginx.conf server { listen 7070; server_name localhost; charset utf-8; location /files { #在docker内nginx的目录 alias /home/files; expires 1d; allow all; autoindex on; } 2.启动命令 docker run --name nginx -d -p 7070:7070 -v D:\dev\nginx-1.13

  • 如何搭建pytorch环境的方法步骤

    1.conda创建虚拟环境pytorch_gpu conda create -n pytorch_gpu python=3.6 创建虚拟环境还是相对较快的,它会自动为本环境安装一些基本的库,等待时间无需很长,成功之后界面如下所示: 2.切换到pytorch环境 使用如下命令,切换到我们刚刚创建好的pytorch虚拟环境,这样我们避免与其它python环境之间的干扰. conda activeta pytorch_gpu 切换成功之后就会看到在路径前边显示我们已经进入该虚拟环境. 3.安装几个常用

  • ubuntu 20.04上搭建LNMP环境的方法步骤

    简单说明 由于之前是用Centos7搭建的,后来使用ubuntu 20.04的系统做为个人开发环境,所以想在ubuntu上也搭建一下环境,和Centos有一些小区别所以记录一下仅供学习. 安装前准备 下载软件: php:7.3.18 nginx:1.18.0 mariadb:10.5.4 解压文件: tar zxf php-7.3.18.tar.gz tar zxf mariadb-10.5.4.tar.gz tar zxf nginx-1.18.0.tar.gz 安装Nginx sudo gr

  • 使用svn管理Maven项目的方法步骤

    首先,在学习这一块时,要先有eclipse中使用svn的基础:https://www.jb51.net/article/194373.htm 0. 在svn服务器中新建一个仓库 在SVN服务器的安装目录下进入bin文件夹,双击VisualAVN Server.msc即可弹出VisualAVN Server窗口 先创建一个新的仓库,右键[Repositories]-[Create New Repository...] 创建maven项目之前,先集成一下它的环境,参考:https://www.jb5

随机推荐