架设maven私服的一个重要目的,就是在团队协作开发的时候,底层开发人员可以将模块部署到服务器,上层的开发人员可以直接使用依赖,而且迭代升级也很方便,否则就需要把.m2中的库一个个发送,这事儿笔者做过,虽然模块不多,可是感觉到这明显不是处理事情的办法。
好了,因为我们的nexus已经搭建完毕,我们要给nexus创建一个新的用户,并且添加nx-admin权限。笔者建议,最好添加一个,虽然默认的admin用户拥有所有权限,什么都能调试,但是这是唯一一个超级用户,一旦权限降低就没有人管得了系统了。笔者就做过,到centos服务器里面找了个遍,也没找到用户信息和权限设置在哪儿,不得已重新架设了一遍。
接下来我们修改maven的settings.xml 文件。
在这里插几句,由于maven默认将.m2库放在了系统盘,我特意做了规划,把开发用到的库放到另外的分区里面。我想当然地以为,在Idea里面把地址改动就好了。结果跟预想的不一样,混乱了好一阵。大致把思路理一下。
.m2库的位置是由maven的settings.xml文件决定的,找到你所使用(意思是假如你安装了多个maven的版本)的maven文件夹下面的conf文件夹,打开settings.xml文件,在开头部分就是修改库位置,照这个样子修改为新的位置。
F:\libraries\maven\.m2\repository
保存以后,可以测试一下。吗用户文件夹下面的.m2删除掉,新建或者在一个现成的项目里面,添加一个新的maven依赖库,刷新导入,看看再用户文件夹下面会不会自动建立.m2文件夹,如果没有,那就是改好了。
然后在做其他修改,修改还是在maven安装文件夹下面的conf/settings.xml文件,别以为在Idea里面改动设置的Override会起作用,只要maven安装文件夹conf下面有settings.xml,它就会首先被使用。因为我改动了.m2的位置,必须要有这里这个文件。当然,如果你没有改动默认.m2的位置,然后可以把maven安装文件夹下面的conf/settings.xml文件删除掉,maven找不到,就会使用你在Idea里面设置的那一个了。
现在我们在settings.xml中一些节点里面添加一些东西。
1. 首先在
nexus-public
chris
123456
nexus-releases
chris
123456
nexus-snapshots
chris
123456
这三个节点信息对应maven在访问这三个库public组,replease和snapshots时的权限验证。
2. 在
nexus-public
Chris Home Nexus public Server
http://192.168.1.100:8081/repository/maven-public/
*
nexus-releases
Chris Home Nexus releases Server
http://192.168.1.100:8081/repository/maven-releases/
*
nexus-snapshots
Chris Home Nexus snapshots Server
http://192.168.1.100:8081/repository/maven-snapshots/
*
对应的是三个库的url。注意那个
关于settings.xml文件的设置基本就结束了,接下来是在maven项目中对pom的配置,如果你只是使用中央仓库的依赖,你什么都不用配置,就当什么都没发生过,你添加的外部依赖,都会首先去私服寻找,如果没有,就会下载一份搭配私服,再从私服下载到本地.m2仓库。如果你需要把你的项目打包上传给其他开发人员依赖,你就需要对pom做一点设置。
3. 设置pom文件。也就是加入一个配置节点。
nexus-releases
http://192.168.1.100:8081/repository/maven-releases/
nexus-snapshots
http://192.168.1.100:8081/repository/maven-snapshots/
4. 你在项目中创建一个工具类,可以调用的,以便测试。
package com.chris.utils.demo;
public class DemoUtils {
public static String getInfo() {
return "This is my utils.";
}
}
项目的maven信息是这样:
com.chris
nexus-utils-demo
1.0.1
jar
这是将来在其他项目中以来的库信息,部署完成后,把下面这个信息发送给其他开发人员,他们就可以下载依赖了。
com.chris
nexus-utils-demo
1.0.1
5. 在执行部署之前,我们要确保仓库允许部署。
把release和snapshots都设置为Allow redeploy。因为我们部署的项目只涉及这两个库。
执行部署命令:
mvn deploy -e
-e:打印异常信息
执行过程中,会下载很多库,你回过头去central仓库看看,出现了很多的依赖库:
你如果把你先前开发的项目都Import Changes,这个仓库会很丰富。
命令执行完毕,如果没有错误信息,去看看release仓库,你的支持库就躺在那里。
好了,在另外一个maven项目中添加依赖
com.chris
nexus-utils-demo
1.0.1
依赖下载完成之后,在测试类中调用。
package com.chris.tech;
import com.chris.utils.demo.DemoUtils;
public class MainTest {
public static void main(String[] args) {
test();
}
private static void test() {
System.out.println(DemoUtils.getInfo());
}
}
运行结果: