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

转自:http://blog.csdn.net/hon_3y/article/details/76982802

搭建私有服务器

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

然而,我们的本地仓库常常没有想要的jar包的,而经常去中心仓库下载这就非常浪费时间和资源了…因此我们一般都有一个私有仓库…

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

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第1张图片

准备步骤

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

Nexus环境搭建

  • 第一步:下载nexus-webapp-1.9.2.4.war包,然后拷贝到tomcat下的webapps目录中
  • 第二步:启动tomcat 默认登录账户密码为: admin admin123
  • 第三步:访问http://localhost:8080/项目名称/

tomcat会自动解析war包,然后就自动下载插件… 
Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第2张图片

访问该项目,进到首页

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第3张图片

登陆… 
Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第4张图片

仓库介绍

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第5张图片

  • 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老版本

每个仓库的作用:

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

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

仓库组的配置顺序:

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第6张图片

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第7张图片

上传jar包到私服

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

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第8张图片

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

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第9张图片

从私服依赖jar包

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



    
    
    <repositories>
        <repository>
            <snapshots>
                <enabled>trueenabled>
            snapshots>
            <id>publicid>
            <name>publicname>
            <url>http://localhost:8080/nexus-2.6.2/content/groups/public/url>
        repository>
    repositories>

    
    <pluginRepositories>
    <pluginRepository>
        <releases>
            <updatePolicy>neverupdatePolicy>
        releases>
        <snapshots>
            <enabled>trueenabled>
        snapshots>
        <id>publicid>
        <name>publicname>
        <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/url>
    pluginRepository>
    pluginRepositories>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第10张图片

在本地仓库中也把私服的jar包下载下来了

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第11张图片

把本地项目发布到私服

server的配置可以在Maven的settings.xml中写上


  
 
     <server>
      <id>releasesid>
      <username>adminusername>
      <password>admin123password>
    server>
    <server>
      <id>snapshotsid>
      <username>adminusername>
      <password>admin123password>
    server>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

值得注意的是:你得留意你用的是哪个Maven,是你自己下载的Maven还是使用Idea集成的Maven,如果没有配置的话,那么就会出现401错误



  <distributionManagement>
  
  <snapshotRepository>
  <id>snapshotsid>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/url>
  snapshotRepository>
  
  <repository>
    <id>releasesid>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/url>
  repository>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

再次查看仓库组

Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】_第12张图片



你可能感兴趣的:(maven)