功能
搭建maven私有仓库 nexus
1、windows安装
1、安装jdk
这个可以就不详细讲了,自己查找哈
2、安装nexus
1、下载
方式一:公众号
关注I am Walker
回复nexus-w
方式二:官网
1、信息填写
填写信息,随便填即可
然后这里选择OSS,代表的是免费版的,Pro的话是需要收费的
可参考:
之后选择download
2、选择版本
我们这里是使用windows的,所以选择第二个
下载过程可能有些慢
2、解压
3、启动
解压之后,进入到nexus的bin目录,之后在命令行指令中执行nexus.exe /run
如果出现这个信息,则代表启动成功了
4、访问
之后进入该页面
5、登录
查询账号密码
打开该文件之后,会有密码
之后会让你修改密码
2、nexus
仓库
type分类
proxy(代理类型)
- 这里就是代理的意思,代理远程中央 Maven 仓库,当 项目构建访问中央库的时候,先通过代理去远程中央仓库下载依赖包到Nexus 仓库,然后再从Nexus仓库下载到本地。私服我们部署在内网服务器,只要其中一个人从远程中央库下来了,以后相同的依赖包就都是从Nexus私服上进行下载,这样大大加快下载速度,不怕远程中央仓库出现问题。
hosted(宿主类型)
- 创建布和代理方式创建差不多
- Hosted 是宿主机的意思,就是怎么把第三方的 Jar 放到私服上。 Hosted 有三种方式,Releases、SNAPSHOT、Mixed
group(仓库组类型)
- 将其他仓库类型合并一起(maven public就是group类型),如图所示将其他仓库合在一下提供对外使用
仓库属性说明
- maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
- maven-releases:私库发行版jar
- maven-snapshots:私库快照(调试版本)jar
- maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
修改配置 (如端口等)
内存分配
3、创建仓库
本地-快照仓库:就是为发布的jar包,比如测试jar
本地-正式仓库:就是第三方给我们提供的jar包,不需要在修改的jar包。
代理仓库:代理华为云、阿里云的或者mavne总仓库
综合仓库:把上面合成一个仓库,都可以使用。
创建snapshot
之后点击创建
创建成功后
创建release
创建 proxy仓库
阿里云仓库地址
[https://maven.aliyun.com/repository/public](https://maven.aliyun.com/repository/public)
华为云仓库地址
[https://mirrors.huaweicloud.com/repository/maven/](https://mirrors.huaweicloud.com/repository/maven/)
之后点击创建
创建 组合仓库
按顺序的目的是:
先寻找本地私服正式jar包
如果没有则找快照、最后再到代理中找
4、发布jar包到私服
1、确保安装maven
2、在settings.xml
文件中添加配置
a.仓库
本地仓库,具体可以自己定,这个本地仓库主要是用来存放jar的,如果没有的话,可以自己创建一个空文件夹
b.配置server
<server>
<id>walker-hosted-snapshot</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>walker-hosted-release</id>
<username>admin</username>
<password>123456</password>
</server>
3、修改pom.xml文件
url从这里获取
注意:
如果项目中有maven-plugin插件的话,需要添加一个true标签,否则会出现打包之后出现BOOT-INF
,导致引入依赖时没法使用
4、修改idea中的maven配置
之后点击ok即可
5、发布
mvn deploy
或者再maven工具中执行deploy也可以
如果最后出现BUILD SECCESS
,则代表发布成功
查看发布结果
可以发现已经发布成功
出现在快照的原因?
因为我们的版本设置的是快照 snapshot
怎么打包成release版本?
去掉 -SNAPSHOT
重新执行 mvn deploy
,结果如下
单独上传jar包
1、上传位置
2、上传
3、查看上传结果
本地使用私服环境并下载jar包
1、配置综合仓库的服务器配置 server
<server>
<id>neuxs-walker</id>
<username>admin</username>
<password>123456</password>
</server>
2、配置镜像 mirrior
url从这里获取
3、配置profile和activeProfile
<mirror>
<id>nexus-walker</id>
<name>internal nexus repository</name>
<url>http://127.0.0.1:8081/repository/walker-group/</url>
<mirrorOf>!internal.repo,*</mirrorOf>
</mirror>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<profile>
<id>nexus-walker</id>
<!-- 远程仓库列表 -->
<repositories>
<repository>
<id>nexus-walker</id>
<name>Nexus Central</name>
<!-- 虚拟的URL形式,指向镜像的URL-->
<url>http://127.0.0.1:8081/repository/walker-group/</url>
<layout>default</layout>
<!-- 表示可以从这个仓库下载releases版本的构件-->
<releases>
<enabled>true</enabled>
</releases>
<!-- 表示可以从这个仓库下载snapshot版本的构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 插件仓库列表 -->
<pluginRepositories>
<pluginRepository>
<id>nexus-walker</id>
<name>Nexus Central</name>
<url>http://localhost:8081/repository/walker-group/</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
<activeProfiles>
<!--需要激活 <profile>中的ID才生效-->
<activeProfile>nexus-walker</activeProfile>
<activeProfile>jdk-1.8</activeProfile>
</activeProfiles>
4、引入pom包
在pom.xml中引入
导入成功后,就可以使用了
疑问
pom属性
POM属性
用户可以使用该属性引用POM文件中对应元素的值,常用的POM属性包括:
${project.build.sourceDirectory}:项目的主源码目录,默认为 src/main/java
${project.build.testSourceDirectory}:项目的测试源码目录,默认为 src/test/java
${project.build.directory}:项目构件输出目录,默认为 target/
${project.outputDirectory}:项目主代码编译输出目录,默认为 target/classes/
${project.testOutputDirectory}:项目测试代码编译输出目录,默认为 target/test-classes/
${project.groupId}:项目的 groupId
${project.artifactId}:项目的 artifactId
${project.version}:项目的 version,与${version}等价
${project.build.fianlName}:项目打包输出文件的名称。默认为${project.artifactId}-${project.version}
问题
1、新建的模块没有在对应的父模块下面
2、已经导入依赖,但是没有找到包
参照其他的,都是直接有路径的
而我的是放在boot-inf/classes下
具体解决看问题3
3、生成后的jar包如何去除boot-inf
解决方式: 在pom.xml中添加