maven仓库--私服(Nexus的配置使用)

1.1 私服仓库是什么

  私服,私有服务器,是公司内部Maven项目经常需要的东东。Nexus是常用的私用Maven服务器,一般是公司内部使用。其作用指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。

1.2 Nexus中的仓库

1.2.1 类型介绍:

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

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

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

1.2.2 管理本地仓库

  我们前面讲到类型为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仓库。

1.2.3 maven项目索引

  下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能

  保存后后台会运行一个任务,点击菜单栏的Scheduled Tasks选项即可看到有个任务在RUNNING。 下载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如:junit

1.3 配置私服链接

  在项目的pom.xml或者settings.xml文件里加入一下配置信息(区别,pom.xml是针对当前项目,settings.xml是全局的针对所有项目)

1.3.1 pom.xml  针对当前项目

配置相关私服信息指定仓库:

    <repositories>
        <repository>
            <id>nexus</id>
            <name>nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <!-- Release版本则代表稳定的版本 -->
            <releases>
                <enabled>true</enabled>
            </releases>
            <!-- Snapshot版本代表不稳定、尚处于开发中的版本,默认关闭,需要手动启动 -->
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

指定插件仓库:

  <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>nexus</name>
            <url>http://192.168.1.103:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

1.3.2 settings.xml  针对全局所有项目

1.3.2.1 Maven仓库组:

  我们可以建立多个proxy代理仓库,hosted本地仓库, 如果没有仓库组的概念,我们如果需要引用这些仓库的是时候需要一一加入到我们的setting.xml里面去, 有了仓库的组的概念, 我们只需要做一次引用就可以了,把我们需要的仓库加入到仓库组即可。如下:

    <!-- 配置相关私服信息指定仓库 -->
    <profiles>
        <profile>
            <id>nexusProfile</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>nexus Repository</name>
                    <url>http://localhost:8081/nexus/content/groups/public/</url>
                    <layout>defult</layout>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <!-- snapshots默认是关闭的false,必须显示的打开 -->
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <!-- 激活 -->
    <activeProfiles>
        <activeProfile>nexusProfile</activeProfile>
    </activeProfiles>

  仓库组默认包含本地仓库Releases,snapshots, 3rd party和代理仓库MavenCentral. 你可以在Configuration配置页添加仓库到这个仓库组. 如果需要你还可以创建一个仓库组,在Repositories菜单处选add-->Repository Group即可:

1.3.2.1 配置仓库镜像:

  默认的,如果本地仓库找不到依赖的构件,这时需要东西时先到Nexus上找,如果发现Nexus服务关闭后,会自动到中央仓库找。

  如果我们想覆盖中央仓库的默认地址,强制依赖的东西都到Nexus中去找,即使Nexus关闭也不会到中央工厂去下载:

    <!--工厂的镜像,只要工厂的访问,都会自动来找镜像,如果镜像里面没有找到就无法访问,就停止下载了 -->
    <mirrors>
        <mirror>
            <id>nexusMirror</id>
            <mirrorOf>nexus</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://localhost:8081/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>

1.3.3 配置项目发布

  <distributionManagement>
        <repository>
            <id>user-release</id>
            <name>User Project Release</name>
            <url>http://192.168.1.103:8081/nexus/content/repositories/releases/</url>
        </repository>  

        <snapshotRepository>
            <id>user-snapshots</id>
            <name>User Project SNAPSHOTS</name>
            <url>http://192.168.1.103:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>  

注意配置了还是发布项目到私服失败,原因为没有权限,会出现401错误码,原因就是权限不够。

 

配置权限在settings.xml:

注意Respository中的id一定要和server下的id一致,切记!!否则出现权限问题。

然后运行发布

clean deploy

在控制台发布成功

然后进入到私服上的仓库中,看一下确实存在刚刚发布的项目

1.4 宿主库——3rd party

  假如我们下载了Oracle的驱动程序jar包想给其他项目组使用,就需要上传该jar包。选中宿主库——3rd party,之后选择Artifact Upload上传至宿主空间。

  最后点击上传

1.5 如果本地仓库有东西,但Nexus中没有

  需要将该东西考到Nexus仓库中,然后更新仓库索引:

本文参考:zec0910的专栏大鹏

本文出自:艺意

时间: 2024-10-15 07:13:47

maven仓库--私服(Nexus的配置使用)的相关文章

maven仓库私服配置

maven仓库私服配置 私服访问地址:[[http://192.168.1.252:9080/nexus/content/groups/public/ 地址]] 1. 打开eclipse/myeclipse的maven插件:点菜单 Window ---> Preferences,找到maven插件,点开User Settings配置项,找到使用的settings.xml文件位置,用UltraEdit或其他XML编辑器打开该文件 2. 修改settings.xml配置:2.1 文件开头的local

nexus建立maven仓库私服及Snapshots、release的版本管理

环境搭建   1.linux安装maven wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz   tar zxvf apache-maven-3.0.5-bin.tar.gz   mv apache-maven-3.0.5 /usr/local/apache-maven-3.0.5   vi /etc/profile 增加: export MAVEN_HOM

私服 Nexus 的配置 (转)

一.概述 1.概要 现在的项目基本都是用Maven来管理工程,这样一来在公司内容搭建一个私服就非常有必要了,这样一来可以管理公司内部用的JAR包,也可以管理第三方的各种JAR来,以免每次都要从外网的仓库中下载.私服有两种软件搭建Nexus和artifactory,这两个各有优点.artifactory 三年前已配置过了,本文配置一下Nexus.Nexus还是一个比较流行的私服. 2.Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问.利用

2.Maven仓库的理解及配置

什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文 件,如log4j.jar,junit.jar等等.每建立一个项目,你都需要建立这样的一个/lib目录,然后复制一对jar文件,这是很明显的重复. 重复永远是噩梦的起点,多个项目不共用相同的jar文件,不仅会造成磁盘资源的浪费,也使得版本的一致性管理变得困难.此外,如果你使用版本管理工具,如 SVN(你没有使用版本管理工具?马上试试SVN

Maven仓库从Nexus迁移到JFrog Artifactory踩坑

 1.概述 部门内用Nexus搭建Maven仓库,仓库中除了有配置阿里云仓库代理和中央仓库代理,也有部门自己封装的crmd平台jar包. 总体依赖传递为 spring-boot(官方) --> base-parent(crmd平台包) --> platform-parent(crmd平台包) --> app-parent(crmd平台包) --> 应用代码,平台的jar包在中间做了一些封装和优化,比如统一spring boot等版本号,部门所有的应用的引用的spring boot版

maven仓库私 nexus 使用笔记

一. 配置代理仓库时nexus本身的请求代理配置 由于在公司内网办公,访问外网有限制,所以当三配置代理仓库时,neuxs本身需要设置访问代理,下载最新neuxs2.11.2版本, 在代理仓库配置页找不到Default http proxy Settins这一项,这项配置是在左侧面板->Administration->Server,点击链接,页面如下图所示: 然后填写代理主机和代理端口即可~ 来自为知笔记(Wiz)

Maven 私服 Nexus 界面配置

1.仓库配置 为了避免攻击,nexus已经把中央仓库从 http://repo.maven.apache.org/maven2 修改为 https://repo.maven.apache.org/maven2 当然以前地址的同样可以使用,只是为了更安全把http协议修改为Https了. 2.代理配置 老版本是对每仓库进行配置,新增新版本只需一次配置即可

maven仓库地址

使用Maven进行开发的时候,比较常见的一个问题就是如何寻找我要的依赖,比如说,我想要使用activeMQ,可是我不知道groupId,artifactId,和合适的version.怎么办呢?本文介绍几个提供maven仓库搜索服务的站点. 搜索出来结果后,把结果复制到pom.xml即可 例如: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId>

发布library到Maven仓库

发布library到Maven仓库 在Android Studio中想要使用一些第三方类库的时候非常方便,只需要在build.gradle中加入一行代码就可以了: dependencies { compile 'com.google.code.gson:gson:2.3.1' } 刚从Eclipse转过来的时候感觉太方便了,也不用下jar包然后拷贝到libs目录了,重要的是以后升级起来灰常方便,改个数字就好了. 那究竟它里面是怎么运转的呢?其实Android Studio是从Maven仓库中下载