Bootstrap

【maven】超详细Maven搭建私库、上传jar包和使用

功能

搭建maven私有仓库 nexus

1、windows安装

1、安装jdk

这个可以就不详细讲了,自己查找哈

2、安装nexus
1、下载

方式一:公众号
关注I am Walker回复nexus-w

方式二:官网

1、信息填写
image.png
填写信息,随便填即可
然后这里选择OSS,代表的是免费版的,Pro的话是需要收费的
可参考:
image.png

之后选择download

2、选择版本
image.png

我们这里是使用windows的,所以选择第二个
image.png

image.png

下载过程可能有些慢

2、解压
3、启动

解压之后,进入到nexus的bin目录,之后在命令行指令中执行nexus.exe /run
image.png
image.png
image.png

image.png

如果出现这个信息,则代表启动成功了
image.png

4、访问

http://localhost:8081/

之后进入该页面
image.png

5、登录

image.png

查询账号密码
image.png
打开该文件之后,会有密码
image.png

之后会让你修改密码
image.png

2、nexus

仓库
image.png

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中使用。
修改配置 (如端口等)

image.png
image.png

内存分配

image.png
image.png

3、创建仓库

本地-快照仓库:就是为发布的jar包,比如测试jar
本地-正式仓库:就是第三方给我们提供的jar包,不需要在修改的jar包。
代理仓库:代理华为云、阿里云的或者mavne总仓库
综合仓库:把上面合成一个仓库,都可以使用。
创建snapshot

image.png

image.png
image.png
之后点击创建
image.png

创建成功后
image.png

创建release

image.png
image.png

创建 proxy仓库

image.png

阿里云仓库地址
[https://maven.aliyun.com/repository/public](https://maven.aliyun.com/repository/public)
华为云仓库地址
[https://mirrors.huaweicloud.com/repository/maven/](https://mirrors.huaweicloud.com/repository/maven/)

image.png

之后点击创建

创建 组合仓库

image.png
image.png
按顺序的目的是:
先寻找本地私服正式jar包
如果没有则找快照、最后再到代理中找

image.png

4、发布jar包到私服

1、确保安装maven
2、在settings.xml文件中添加配置

a.仓库
本地仓库,具体可以自己定,这个本地仓库主要是用来存放jar的,如果没有的话,可以自己创建一个空文件夹
image.png

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>

image.png

3、修改pom.xml文件

image.png

url从这里获取
image.png

注意:
如果项目中有maven-plugin插件的话,需要添加一个true标签,否则会出现打包之后出现BOOT-INF,导致引入依赖时没法使用
image.png

4、修改idea中的maven配置

image.png
image.png

之后点击ok即可

5、发布

image.png
mvn deploy

或者再maven工具中执行deploy也可以
image.png

如果最后出现BUILD SECCESS,则代表发布成功
image.png

查看发布结果
image.png

image.png
可以发现已经发布成功

出现在快照的原因?

因为我们的版本设置的是快照 snapshot
image.png

怎么打包成release版本?

去掉 -SNAPSHOT
image.png
重新执行 mvn deploy,结果如下
image.png

单独上传jar包

1、上传位置image.png
2、上传image.png
3、查看上传结果
image.png
image.png
image.png

本地使用私服环境并下载jar包

1、配置综合仓库的服务器配置 server

image.png

	<server>
      <id>neuxs-walker</id>
      <username>admin</username>
      <password>123456</password>
    </server>

2、配置镜像 mirrior

image.png

url从这里获取
image.png
image.png

3、配置profile和activeProfile

image.png
image.png

image.png

	<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包

image.png
在pom.xml中引入
image.png
导入成功后,就可以使用了
image.png

疑问

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、新建的模块没有在对应的父模块下面

image.png

2、已经导入依赖,但是没有找到包

image.png
参照其他的,都是直接有路径的
image.png

而我的是放在boot-inf/classes下
image.png具体解决看问题3

3、生成后的jar包如何去除boot-inf

解决方式: 在pom.xml中添加
image.png

;