三,使用nexus3配置maven私有仓库
配置之前,我们先来看看系统默认创建的都有哪些?

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

老规矩,开始创建。
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仓库。
proxy的功能就是代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。 这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。
Name
: proxy-maven
Maven 2
: 不设置,使用默认。
Proxy
Remote Storage: 远程仓库地址,这里填写:
Storage
: maven-use。
整体配置截图如下:

4,创建一个group类型的maven仓库。
group类型的maven仓库,是一个聚合类型的仓库。它可以将前面我们创建的2个仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。后面通过一些配置,大家可能会对这个group有更加深入的了解。
Name
:group-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,从而通过修改配置来实现走私服拉取依赖,但是,经过这样的操作,我失败了。
因此这里将现役正用的配置拿出来,仅修改其中的核心处(私服链接)吧: 点击此处,即可展开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 moreCaused 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 moreCaused 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 moreCaused 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无法下载的时候,一般情况下的解决办法都是通过手动下载,然后再手动上传到私服当中。
Last updated