前言
网上有关于如何配置maven跟nexus已经有很多文章了,但是有些容易踩坑的点没有介绍清楚,本次在配置过程中,遇到一些坑,作为心得跟大家分享一下:
1、关于mirrorOf节点的补充说明
maven的settings.xml文件里面的mirrorOf节点,他是用来跟pom文件里面的仓库id或者setting.xml文件里面<profiles>里面的<profile>下面的仓库id保持一致,意思就是给这个id的仓库配置一个镜像仓库(意思就是代理,帮你加速)。网上很多案例,配置的都是<mirrorOf>central</mirrorOf>
为什么是central,不管你的有没有配置过仓库id,在maven项目默认的配置中会带一个central仓库,在你的项目的pom文件里面是看不到的,我们可以在pom文件上右击,如下图:
可以发现项目默认会生效一个central仓库,所以在配置镜像仓库的时候,可以配置<mirrorOf>central</mirrorOf>,示例如下:
<mirror>
<id>alimaven-central</id>
<!--这里一定要注意的是mirrorOf要与pom文件中的id属性对应,pom文件里普通仓库和插件仓库的id都为central-->
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
2、settings.xml文件修改不生效问题
为什么在idea里面配置了settings.xml文件,然后修改后感觉不生效,而且有些没配过的属性。这个是因为maven的setting.xml是加载多个文件取并集,
a、优先从 ${user}.m2(你本地存jar包的仓库) 目录下读取 setting.xml。
b、当 ${user}.m2 目录下不存在 setting.xml 时,从 ${M2_HOME}\conf(maven的home目录) 目录下读取
c、IDEA 中即使指定了 setting.xml 文件,在 IDEA terminal 窗口运行 mvn 命令时,配置文件 setting.xml 仍然按照规则 a、b 来读取。
这样就会给我们产生一个误区,我明明已经修改了${user}.m2下面的setting文件,为什么感觉没生效,那可能是maven的home目录的文件里面也有这个属性配置,导致最后老的属性还在,同时多了一个新的属性
3、在idea上查看maven生效的配置文件
可以通过一下命令mvn help:effective-settings,截图如下:
4、关于nexus2跟nexus3
个人感觉,各有优缺点,感觉nexus3的页面好看一点,然后交互相对友好一些。但是nexus3可以通过界面上传快照SNAPSHOT包,而nexus2好像只能通过命令上传快照包,这个网上有介绍。nexus3如果要需要在页面上上传快照包,对于仓库的类型需要设置为mixed混合模式。
5、手动传包到nexus报错
mvn deploy:deploy-file -D groupId=com.shsnc -D artifactId=cmdb-server-openapi -D version=2.14.0-SNAPSHOT -D packaging=jar -D file=/Users/user/.m2/repository/com/xxxx/2.14.0-SNAPSHOT/xxx-server-openapi-2.14.0-SNAPSHOT.jar -D repositoryId=Snapshots -D url="http://127.0.0.1:8081/nexus/content/repositories/snapshots/" -D generatePom=true -D uniqueVersion=false
在执行该命令时,由于电脑自身的安全问题,可能会由于包路径的权限问题而报错,建议把需要上传到挪到其他位置,比如桌面.