在Maven中拉依赖一般是本地仓库,如果本地仓库没有就会查看私服,还是没有就会去中央仓库
而对于企业级的开发中,一部分是内网环境,对于内网环境而言,我们的Java程序加载不了外网的依赖,公司就需要我们搭建nexus私服 ,今天就实现以下如何在私服上拉取依赖
1.下载nexus(一些现成的项目nexus里面包含所有的依赖,可以直接U盘拉下来)
2.启动nexus
点击第一个
点击bin
cmd到命令行
输入nexus.exe /run命令
开启
3.进入本地的8081端口
127.0.0.1:8081(应为没网络而localhost需要联网)
点击sign in进行登录
初始用户名:admin密码:admin123
点击设置进入
一下就是许多桶装依赖
一般都是后缀为public的总结,详细请看对于的文档
maven-public是maven依赖,npm-public是Vue依赖
这边补充一下:Vue的话加入.npmrc文件,写入以下代码拉取依赖
shamefully-hoist=true
registry=http://127.0.0.1:8081/repository/npm-public/
解释如下
shamefully-hoist=true:
这是npm的一项配置,通常用于处理依赖关系管理;shamefully-hoist 是一个实验性特性,用于将依赖项提升到更高级别的节点;这可以减少依赖树的深度,从而加速包的安装和减小磁盘占用;
默认情况下,npm会尝试以递归方式安装依赖项,这可能会导致深层次的依赖关系,使得包的安装和构建变得缓慢;shamefully-hoist 允许将依赖项提升到更高级别的目录,以减少这种深度;
registry=http://127.0.0.1:8081/repository/npm-public/:
这是指定npm包注册表(registry)的URL;npm包注册表是存储和分发Node.js包的远程服务器或本地仓库;
在这里,http://127.0.0.1:8081/repository/npm-public/ 是一个自定义的npm包注册表地址,通常情况下,这是一个本地或私有的npm注册表,用于存储自定义或内部使用的包,而不是公共npm注册表(https://registry.npmjs.org/);
综合起来,这两个配置选项一起使用,可以用于在本地或私有环境中配置npm,以加速依赖项的安装,并指定自定义的npm包注册表地址,以便在这个注册表中查找和下载包;
使用命令拉取(如果本地有node_modules那就不需要拉)就可以了
npm install
继续maven,之后点进去
在你的maven配置加上上图URL即可,下面Avaliable是管理的别的桶
点击maven的conf文件打开seting.xml
加上
<server> <!--身份验证配置用于登录nexus-->
<id>nexus-public</id> <!-- nexus的认证id -->
<username>admin</username> <!--nexus中的用户名-->
<password>admin123</password> <!--nexus中的密码-->
</server>
<mirror> <!--定义一个Maven镜像-->
<id>nexus-public</id><!-- 这个id必须与上面登录nexus的id相等 -->
<mirrorOf>*</mirrorOf><!-- * 是通配符,表示匹配所有的仓库-->
<url>http://127.0.0.1:8081/repository/maven-pubblic/</url>
<!-- 这个是nexus的对应仓库url-->
</mirror>
拉取对应私服仓库
错误1:无网记得把localhost改成127.0.0.1了,不然可能拉不到依赖
错误2:如果出现cannot access nexus (仓库地址)
记得把脱机工作去掉
也可以在pom.xml中修改,代码为
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nexus</groupId>
<artifactId>nexus-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<name>nexus-maven Maven Webapp</name>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven-nexus</id>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!--该配置是为了防止pom中的jar包从私服下载之后,但是执行mvn中从插件还是从中央仓库中下载-->
<pluginRepositories>
<pluginRepository>
<id>maven-nexus</id>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</project>
如果要上传私服
java项目maven文件仓库,seting文件配置如下:
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
pom.xml配置文件
<distributionManagement>
<!--根据对应的version后缀选择对应的桶上传-->
<repository>
<id>nexus-releases</id>
<name>maven-releases</name>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>maven-snapshots</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
也可以先打成jar包在命令上传
当然也可以点击鼠标Upload创建
ok今天就分享就到这里了