用GitHub创建Maven私有仓库
Github上创建仓库】
首先,在GitHub上创建自己的仓库(mvn-repo):
【配置本地setting文件】
找到本地的maven settings文件,配置server:
有两种选择,可以选择配置username和password,或者选择配置Personal access tokens<OAUTH2TOKEN>(也是填充到password字段)。
优先使用Personal access tokens,因为有些公司内部可能会对用户名和密码做限制(我也不知道为什么)。
前者即是GitHub的用户名以及密码,后者需要在GitHub上进行申请,步骤如下:
选择对应的权限,并标注Note:
然后点击查看:
上图红框即是你的personal access token。
注:此token会不断发生变化,每一次查看都会更新,更新后之前的不可用,所以要妥善保存。
【增加本地临时存储库】
在pom文件中增加
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><build>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<!-- altDeploymentRepository :指定替代方案应该部署项目工件的存储库(除了指定的工件)。 -->
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo </altDeploymentRepository>
</configuration>
</plugin>
</plugins>
</build></pre>
然后执行mvn clean deploy。
如下图,版本已经正确地发布到本地指定的存储库中了。
[![clip_image011[6]](https://img.haomeiwen.com/i24999242/4c36cb0abc16b5de.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 "clip_image011[6]")](https://img2020.cnblogs.com/blog/1628496/202011/1628496-20201122141636310-1642050576.png)
【配置远程的github服务】
在pom文件中增加以下几行:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><properties>
<github.global.server>github</github.global.server>
</properties></pre>
【发布到远程的github指定的仓库】
在pom文件中配置以下几行:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><!--源码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!--github上传插件,用于修改后的发布,执行 mvn clean deploy 自动打包上传到github-->
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>0.12</version>
<configuration>
<message>Creating site for ${project.artifactId} ${project.version}</message>
<noJekyll>true</noJekyll>
<!--本地jar地址, 对应上面的altDeploymentRepository-->
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>
<!--分支-->
<branch>refs/heads/master</branch>
<merge>true</merge>
<includes>
<include>**/*</include>
</includes>
<!--对应github上创建的仓库名称 name-->
<repositoryName>mvn-repo</repositoryName>
<!--github登录账号 对应的密码存在maven的setting.xml文件中-->
<!--由github组织拥有,则该值将是组织名称,如果由用户拥有,则该值将是用户名-->
<repositoryOwner>liufarui</repositoryOwner>
</configuration>
<executions>
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin></pre>
再次执行mvn clean deploy命令即可发布到GitHub的maven仓库中。
如上图即为成功;
我们可以查看我们的mvn-repo项目,发现内容已经发生了变化:
【使用依赖包】
在新项目的pom文件中增加以下行:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><repositories>
<repository>
<id>mvn-repo</id>
<!-- https://raw.github.com/用户名/仓库名/分支名 -->
<url>https://raw.github.com/liufarui/mvn-repo/master</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories></pre>
在新项目的pom文件中增加依赖:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dependencies>
<dependency>
<groupId>com.github.liufarui</groupId>
<artifactId>demo-maven-github-repo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies></pre>
由于我们之前开发的这个是个maven插件工程,所以增加以下行进行使用:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><build>
<plugins>
<plugin>
<groupId>com.github.liufarui</groupId>
<artifactId>demo-maven-github-repo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</plugin>
</plugins>
</build></pre>
我们现在可以在右侧Maven中看到我们的插件
执行看结果:
【demo地址】
以上,即是整个Github创建maven仓库的内容,为了方便大家查看学习,我把demo项目放到了我的github上,大家可以自行查看,有问题也可以在评论区随时讨论:
【问题】
|
[ERROR] Failed to execute goal com.github.github:site-maven-plugin:0.12:site (default) on project path: Error creating commit: Invalid request.
|
遇到以上问题是因为没有设置姓名,在setting中进行设置:
|
Error creating blob: cannot retry due to server authentication, in streaming mode
|
很多人都遇到了此问题,此问题一般是权限问题,有可能是用户名密码不对,也有可能是公司网络做了特殊的限制,还有一些奇怪的原因,一般可以通过配置Personal access tokens去解决
以上,是如何搭建私有的maven仓库,这个仓库必须是有个人账户认证才可以使用的,无法确保大家可以一起用,之后,会再写一篇如何搭建public仓库的博客。
如果觉得本文对你有帮助,可以转发关注支持一下