Maven【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】

搭建私有服务器

前面已经说过了,咱们使用Maven的使用,若是须要导入相对应的jar包,Maven首先会在咱们的本地仓库中寻找—>私有仓库—>中心仓库…web

然而,咱们的本地仓库经常没有想要的jar包的,而常常去中心仓库下载这就很是浪费时间和资源了…所以咱们通常都有一个私有仓库…浏览器

另外有些公司都不提供外网给项目组人员,所以就不能使用maven访问远程的仓库地址,因此颇有必要在局域网里找一台有外网权限的机器,搭建nexus私服,而后开发人员连到这台私服上,这样的话就能够经过这台搭建了nexus私服的电脑访问maven的远程仓库缓存

这里写图片描述

准备步骤

咱们使用的是nexus框架来搭建私服,它属于sonatype 机构的开源框架,用该框架架设maven 私有服务器tomcat

Nexus环境搭建服务器

第一步:下载nexus-webapp-1.9.2.4.war包,而后拷贝到tomcat下的webapps目录中
第二步:启动tomcat 默认登陆帐户密码为: admin admin123
第三步:访问http://localhost:8080/项目名称/
tomcat会自动解析war包,而后就自动下载插件… oracle


访问该项目,进到首页app

这里写图片描述

登录… 框架

这里写图片描述

仓库介绍

这里写图片描述

  • proxy:是远程仓库的代理。好比说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,若是找不到的话,就会从远程仓库下载,而后返回给用户,至关于起到一个中转的做用
  • Hosted:是宿主仓库,用户能够把本身的一些构件,deploy到hosted中,也能够手工上传构件到hosted里。好比说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就须要手工上传到hosted里
  • Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不须要在pom中配置多个地址,只要统一配置group的地址就能够了右边那个Repository Path能够点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。我今天就发现,明明构件已经更新了,在浏览器里却看不到,还觉得是BUG,实际上是被浏览器缓存了
  • virtual:也是中央仓库镜像,支持M1老版本

每一个仓库的做用:webapp

  • 3rd party: 没法从公共仓库得到的第三方发布版本的构件仓库
  • Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
  • Central: 用来代理maven中央仓库中发布版本构件的仓库
  • Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
  • Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库
  • Releases: 用来部署管理内部的发布版本构件的宿主类型仓库
  • Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库

仓库组是一个虚拟的概念,就是经过对实体仓库(proxy、hosted)进行聚合, 对外暴露一个统一的地址这里要注意的是,放到左边的仓库,才是会被聚合的仓库maven

仓库组的配置顺序:

这里写图片描述

这里写图片描述

上传jar包到私服

直接经过网站上传,把桌面上的pig-0.12.1.jar上传到私有服务器中

这里写图片描述

再次查看的时候,已经上传上去了

这里写图片描述

从私服依赖jar包

在pom.xml文件配置私服的路径、组id、版本等等

    <!-- 假如没有私服 ,则 本地仓库找不到,则访问中心仓库
     假若有私服 :访问顺序
       首先访问本地仓库
   本地仓库没有,则访问私服仓库
   私服仓库也没有,则访问中心仓库
 -->
    <!-- 加载的是 第三方项目使用的jar包 -->
    <repositories>
        <repository>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <id>public</id>
            <name>public</name>
            <url>http://localhost:8080/nexus-2.6.2/content/groups/public/</url>
        </repository>
    </repositories>

    <!-- 加载的是maven生命周期插件的jar包 -->
    <pluginRepositories>
    <pluginRepository>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <id>public</id>
        <name>public</name>
        <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
    </pluginRepository>
    </pluginRepositories>

这里写图片描述
在本地仓库中也把私服的jar包下载下来了

这里写图片描述

把本地项目发布到私服

server的配置能够在Maven的settings.xml中写上

  <!-- 分销管理 ,把jar包发布到私服中 -->
 <!--   配置服务器-->
     <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>


值得注意的是:你得留意你用的是哪一个Maven,是你本身下载的Maven仍是使用Idea集成的Maven,若是没有配置的话,那么就会出现401错误。

<distributionManagement>
  <!-- 发布到 快照版本的仓库,即 测试版本仓库 -->
  <snapshotRepository>
  <id>snapshots</id>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
  </snapshotRepository>
  <!-- 发布到 发行版本的仓库中,也能够发布到3rd party 仓库 -->
  <repository>
    <id>releases</id>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url>
  </repository>

再次查看仓库组

这里写图片描述

相关文章
相关标签/搜索