没有配置nexus之前,如果本地仓库没有,那么会去中央仓库下载,通常在企业中会在局域网内部署一台私服服务器,有了私服之后,本地项目会首先去本地仓库找jar包,如果没有找到则连接私服从私服下载jar包,如果私服没有jar包私服同时作为代理服务器从中央仓库下载jar包,这样做的好处是一方面由私服对公司项目的依赖jar包统一管理,一方面提高下载速度,项目连接私服下载jar包的速度要比项目连接中央仓库下载jar包的速度快得多。

在本讲中,我将会演示如何从私服上下载jar包(是将crm-dao项目打包成的jar包),并进行测试。

管理仓库组

nexus中包括很多仓库,hosted中存放的是企业自己发布的jar包及第三方公司的jar包,proxy中存放的是中央仓库的jar包。为了方便从私服下载jar包,可以将多个仓库组成一个仓库组,每个工程需要连接私服的仓库组下载jar包。

你有没有想过如何来配置仓库组啊?首先启动nexus服务,然后在浏览器地址栏中输入http://localhost:8081/nexus/这样的url地址进行访问,接着你会看到在右上角有个Log In的超链接,点击它并使用nexus内置账户(用户名是admin,密码是admin123)进行登录,登录成功之后,你便会看到如下图所示的效果。
在这里插入图片描述
点击页面左侧的Repositories超链接就能看到仓库组了,接着你就可以配置仓库组了。
在这里插入图片描述
上图中仓库组包括了本地仓库、代理仓库等。

在settings.xml文件中配置仓库

在客户端的settings.xml文件中配置私服的仓库,也称之为配置模板。由于settings.xml文件中没有repositories的配置标签,所以需要使用profile标签来定义仓库。

<profile>
    <!-- profile的id -->
    <id>dev</id>
    <repositories>
        <repository>
            <!-- 仓库id,repositories标签内可以配置多个仓库,但要保证id不重复 -->
            <id>nexus</id>
            <!-- 仓库地址,即nexus仓库组的地址 -->
            <url>http://localhost:8081/nexus/content/groups/public/</url>
            <!-- 是否下载releases构件 -->
            <releases>
                <enabled>true</enabled>
            </releases>
            <!-- 是否下载snapshots构件 -->
            <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>

一定要注意,以上配置要添加在settings.xml文件中的profiles标签内。
在这里插入图片描述
使用profile标签定义仓库之后,需要激活才可生效,也即需要激活模板。所以,还需要在settings.xml文件中添加如下配置。
在这里插入图片描述
settings.xml文件配置好了之后,我们可以通过eclipse来查看一下有效pom(有效pom是maven软件最终使用的pom内容,程序员不能直接编辑有效pom),例如查看一下crm-dao项目的有效pom。
在这里插入图片描述
可以看到crm-dao项目的有效pom中有如下内容。
在这里插入图片描述
从以上内容中可得知有两个仓库地址,maven会先从前边的仓库找,如果找不到jar包再从下边的仓库找,从而就实现了从私服下载jar包。

测试从私服下载jar包

测试环境:局域网环境或本地网络

首先,将本地仓库中的由crm-dao项目打包成的jar包删除掉。
在这里插入图片描述
此时,发现crm-service项目并没有报错,这是为什么呢?因为它现在引用的是crm-dao这么一个项目。
在这里插入图片描述
如果说现在我们在eclipse中把crm-dao项目关闭掉,并且切换到maven控制台,你便能看到maven控制台中输出了如下信息。
在这里插入图片描述
项目先从本地仓库找crm-dao,找不到再从私服找,由于之前执行deploy命令已经将crm-dao部署了到私服中,所以可以成功从私服上下载crm-dao并在本地仓库中保存一份。
在这里插入图片描述
从私服下载jar包后,项目有可能会报错,不用担心,更新一下项目即可。

测试环境:互联网环境

在项目的pom.xml文件中添加一个依赖,此依赖在本地仓库和私服中都不存在,此时,maven会先从本地仓库找,本地仓库没有再从私服找,私服没有再去中央仓库下载,jar包下载成功后,在私服、本地仓库中分别存储一份。

更多推荐