• 对于注定会优秀的人来说,他所需要的,只是时间----博主
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!
  • 本站开启了防爆破关小黑屋机制,如果您是正常登录但被关进小黑屋,请联系站长解除!

<三>企业级开源仓库nexus3实战应用–使用nexus3配置maven私有仓库

nexus eryajf 11个月前 (10-18) 2577°C 已收录 10个评论
本文预计阅读时间 23 分钟

*系列汇总*

一两个星期之前,你如果在我跟前说起私服的事情,我大概会绕着你走,因为我对这个东西真的一窍不通。事实上也正如此,开发同学曾不止一次的跟我说公司的私服版本太旧了,许多新的依赖编译之后不会从远程仓库自动缓存下来,然后每次就需要手动的上传,不方便极了。我听了之后,一方面确实因为各种忙碌没有抽开时间,但另一方面,则是每当打开私服面对着满屏的英文时,我都觉得眼前私服毕竟还能用,就不折腾了。

直到偶然一个契机,在网上看到一篇介绍nexus3.x的文章,文章写得也比较清晰,我也有兴致细读下去,就这样,开启了我的nexus3私服之旅。

开始我以为这个只是针对maven私服而存在的工具,后来才发现它所支持的,竟然将运维日常所面临的各种私服都包括了,这就极大的引发了我的钻研兴致,从maven私服的研究开始,一发不可收拾的,就又写出了一个nexus3系列教程,涵盖了安装,配置,maven私服,maven私服从2.x到3.x的迁移,docker私服,npm私服,yum私服,纵观全网络,大概也找不到一个人如此这般的,倾尽所有的,知无不言的,言无不尽的将nexus3作为一个系列写成文章的了。而现在,如果再有人与我说起私服的事情,至少我不会跑了,或许更想停下来了,,,哈哈。这就是付出学习所给人带来的心境上的转化!

前言啰嗦几句,愿您在这个小系列中,学习愉快!

想要查看本系列其他文章:请点此处跳转

希望正在读这段话的你能够在这个小系列中获得自信以及喜悦!

当我摸清了使用nexus3来作为docker的私服了之后,发现再去创建maven的私服,简直不要太简单。事实上正是如此,如果你也从docker私服配置那篇文章过来的,那么,这篇文章基本上不看就能自己配置了。

配置之前,我们先来看看系统默认创建的都有哪些?

其中圈起来的都是系统原有的,用不到,就全删掉,重新创建。

老规矩,开始创建。

1,创建blob存储。

2,创建hosted类型的maven。

点击 Repository下面的 Repositories – Create repository – maven2(hosted) :

  • Name: 定义一个名称maven-local
  • Online: 勾选。这个开关可以设置这个maven repo是在线还是离线。
  • Maven2:这里有三种方式,Releases、SNAPSHOT、Mixed。
    • Releases: 一般是已经发布的Jar包
    • Snapshot: 未发布的版本
    • Mixed:混合的

    这里不做设置,默认即可。

  • Storage
    • Blob store,我们下拉选择前面创建好的专用blob:maven-use
  • Hosted
    • 开发环境,我们运行重复发布,因此Delpoyment policy 我们选择Allow redeploy。这个很重要!

    整体配置截图如下:

    3,创建一个proxy类型的maven仓库。

  • Name: proxy-maven
  • Maven 2: 不设置,使用默认
  • Proxy
  • Storage: maven-use
  • 整体配置截图如下:

    4,创建一个group类型的maven仓库。

  • Namegroup-maven
  • Storage:选择专用的blob存储maven-use
  • group : 将左边可选的2个仓库,添加到右边的members下。
  • 整体配置截图如下:

    这样配置以后,我们就可以使用了。

    5,验证使用。

    使用起来其实非常简单,就是在测试机器上安装maven工具,然后再其配置当中,将地址指向我们的私服地址,然后编译项目,这个时候就会通过私服来拉取jar包了,以后再编译的时候,就可以直接从本地私服拉取了。

    现在找一台测试机器,进行验证。

    1,安装jdk。

    因为maven依赖于jdk,所以要先安装jdk。我们先通过curl 192.168.106.10/a | sh来安装jdk。

    2,安装maven。

    同样,通过 curl 192.168.106.10/a | sh 来安装maven。

    3,更改maven的配置。

    将项目编译依赖地址指向改成私服的配置,需要通过更改maven的配置实现,也就是更改maven/conf/settings.xml的仓库地址。

    说实话,我尝试安装一个全新的maven,从而通过修改配置来实现走私服拉取依赖,但是,经过这样的操作,我失败了。

    因此这里将现役正用的配置拿出来,仅修改其中的核心处(私服链接)吧:

    然后修改其中的第165行为我新建的私服地址,这个地址可以在私服当中如下位置看到:

    修改之后如下:

    4,拉取项目编译。

    拉取之后,进到项目里边,开始编译。

    请注意,这个时候,我们的group里边是空空如也的。

    那么接下来开始编译:

    mvn install -e
    

    接下来就会进入各种依赖下载的界面,我简单截了一小段如下:

    这个时候我们可以明白,其实我新搭建的仓库里边是空的,那么这会儿的流程就是经由group,转向我们配置的proxy,私服在通过proxy拉取远程的jar,然后再经由group,反馈给当前的项目。

    去私服里看看:

    可以看到刚刚编译过程中所下载的jar,都如我们所想的呈现在了group当中,明明是通过proxy下载的远程jar,为何可以在group里边看到呢,我想,这就是我刚刚说的,group的妙处所在吧。

    不过最后这里编译并没有通过,报错信息如下:

    [ERROR] Failed to execute goal on project 51fbadmin-common: Could not resolve dependenciesfor project com.ald.fanbei.admin:51fbadmin-common:jar:1.0.0: Could not find artifact com.third:google.guava:jar:14.0.1 in nexus-osc (http://192.168.157.110:8081/repository/group-maven/) -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project 51fbadmin-common: Could not resolve dependencies for project com.ald.fanbei.admin:51fbadmin-common:jar:1.0.0: Could not find artifact com.third:google.guava:jar:14.0.1 in nexus-osc (http://192.168.157.110:8081/repository/group-maven/)
        at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:221)
        at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:127)
        at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:245)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:199)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project com.ald.fanbei.admin:51fbadmin-common:jar:1.0.0: Could not find artifact com.third:google.guava:jar:14.0.1 in nexus-osc (http://192.168.157.110:8081/repository/group-maven/)
        at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:211)
        at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:195)
        ... 23 more
    Caused by: org.eclipse.aether.resolution.DependencyResolutionException: Could not find artifact com.third:google.guava:jar:14.0.1 in nexus-osc (http://192.168.157.110:8081/repository/group-maven/)
        at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:384)
        at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:205)
        ... 24 more
    Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact com.third:google.guava:jar:14.0.1 in nexus-osc (http://192.168.157.110:8081/repository/group-maven/)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
        at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:367)
        ... 25 more
    Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact com.third:google.guava:jar:14.0.1 in nexus-osc (http://192.168.157.110:8081/repository/group-maven/)
        at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:39)
        at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
        at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    [ERROR]
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
    [ERROR]
    [ERROR] After correcting the problems, you can resume the build with the command
    

    可以看到是缺少com.third:google.guava:jar:14.0.1这个包,由于服务器不能翻墙,因此下载失败,导致编译终止。

    但是,maven私服的基本框架已经搭成,当某一些jar无法下载的时候,一般情况下的解决办法都是通过手动下载,然后再手动上传到私服当中。

    而我们公司老的私服当中其实是有的,因此,如何将老的包迁移,就成了不得不面对的问题。这个问题,留待下回分解。


    weinxin
    扫码订阅本站,第一时间获得更新
    微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

    二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明<三>企业级开源仓库nexus3实战应用–使用nexus3配置maven私有仓库
    喜欢 (9)
    [如果想支持本站,可支付宝赞助]
    分享 (0)
    eryajf
    关于作者:
    学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!

    您必须 登录 才能发表评论!

    (10)个小伙伴在吐槽
    1. eryajf
      签到成功!签到时间:2019-01-11 19:30:47,每日打卡,生活更精彩哦~
      eryajf2019-01-11 19:30 Windows 7 | Chrome 70.0.3538.9
    2. setting.xml 是不是漏了用户名密码?
      fsckzy2019-02-27 16:06 Windows 10 | Chrome 72.0.3626.119
      • eryajf
        不需要的,如果你前边都会按着我的走的,就没有问题。毕竟一个私服,没有必要在搞那么多权限限制
        eryajf2019-02-27 16:10 Windows 7 | Chrome 70.0.3538.9
    3. chengkanghua
      博主, 我现在用的是 nexus 3.1.0.04,如何自己上传私有jar包
      chengkanghua2019-04-11 18:36 Windows 10 | Firefox浏览器 60.0
      • eryajf
        直接上传即可,不过要注意包的几个重要信息,一般包名都会包含着了,还要注意的是,上传地位置,与代码当中引用的位置,要保持一致,否则不会从私服拉取
        eryajf2019-04-11 19:09 Windows 7 | Chrome 73.0.3683.103
        • chengkanghua
          开发打包了一堆文件给我,里面是目录,里面有pom 文件xml文件,还有没有后缀名的, 我再上传时候填写 extension 不知道写什么了
          chengkanghua2019-04-11 19:39 Windows 10 | Firefox浏览器 60.0
          • eryajf
            这个extension其实是不需要填写的,这个是包的一个扩展后缀名的一个展示,当你上传包之后,会自动识别的,而不需要填写,你可以先上传一个,测试一下,需要填写的内容,是下边的那三项,如果那三项开发给的信息不是特别清楚,那么应该找他沟通。我们这边我一般是把管理的权限给到开发的管理者,一般都是由他来上传了。或许你也可以这么做,这些事情他们自己内部消化要比这样联动着做效率要高很多
            eryajf2019-04-11 19:47 Windows 7 | Chrome 73.0.3683.103
            • chengkanghua
              嗯, 我找到jar 包了,,是后面三个不知道填什么了
              chengkanghua2019-04-11 19:53 Windows 10 | Firefox浏览器 60.0
        • chengkanghua
          chengkanghua2019-04-11 19:41 Windows 10 | Firefox浏览器 60.0
        • chengkanghua
          https://i.loli.net/2019/04/11/5caf27bcd066f.pnghttps://i.loli.net/2019/04/11/5caf27f6a9fc4.png
          chengkanghua2019-04-11 19:41 Windows 10 | Firefox浏览器 60.0