使用site-maven-plugin在github上搭建公有仓库

简介: 使用site-maven-plugin在github上搭建公有仓库

目录



简介


Maven是我们在开发java程序中经常使用的构建工具,在团队合作开发过程中,如果我们想要将自己写好的jar包共享给别人使用,通常需要自己搭建maven仓库,然后将写好的jar包上传到maven仓库中,以供其他用户使用。


搭建maven仓库需要服务器和域名,对公司而言域名和服务器多的是,但是如果是我们个人或者小团队想共享一些非常有用的jar包给别人使用就太麻烦了。


最近Github好消息频出,先是对个人用户取消了repositories和协作用户的个数限制,后面对于企业用户也进行了升级和降价处理。如果仓库不大的话,完全可以把仓库搬到github上面去。


更多精彩内容且看:
* [区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新](https://blog.csdn.net/superfjj/article/details/106248377)
* [Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新](https://blog.csdn.net/superfjj/article/details/106226840)
* [Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新](https://blog.csdn.net/superfjj/article/details/106226778)
* [java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程](https://blog.csdn.net/superfjj/article/details/105482751)


更多内容请访问www.flydean.com


前期准备


要在github上面搭建maven仓库,我们需要使用到maven的插件:site-maven-plugin。因为要连到github上面,所以需要设置github的oauth权限。直接用用户名密码也可以,但是这样做不安全,我们并不推荐。


image.png


注意,用户这里的权限一定要选,否则后面会报异常。


有了权限,接下来我们再创建一个github-maven-repository,用来作为mvn仓库存储数据。


假如生成的地址是:https://github.com/flydean/github-maven-repository


在maven中配置GitHub权限


这一步我们需要编辑setting.xml文件,一般来说这个文件是在~/.m2/settings.xml。

我们需要添加一个Server,如果直接使用github的用户名密码,则像下面这样:


<server>
   <id>github</id>
    <username>YOUR_USERNAME</username>
    <password>YOUR_PASSWORD</password>
</server>


前面我们讲到了直接使用用户名是不安全的,我们可以使用上面创建的oauth key:


<server>
    <id>github</id>
    <password>OAUTH2TOKEN</password>
</server>


这个id会在后面的pom.xml文件配置中用到,这里我们先记下来。


配置deploy-plugin


我们的目标是生成包含jar包的maven依赖。在将jar包上传到远程仓库之前,我们需要在本地先生成。


先配置一个本地的repository:


<distributionManagement>
        <repository>
            <id>maven.repo</id>
            <name>Local Staging Repository</name>
            <url>file://${project.build.directory}/mvn-repo</url>
        </repository>
    </distributionManagement>


上面我们指定了在项目的build目录下面创建了mvn-repo用来存储本地打好的package。


接下来,我们需要使用maven-deploy-plugin指定将打好的包部署到刚刚我们指定的local仓库中。


<plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <configuration>
                <altDeploymentRepository>maven.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
            </configuration>
        </plugin>


配置site-maven-plugin


现在我们就可以使用site-maven-plugin了:


<plugin>
            <!-- Deploy the web site -->
            <groupId>com.github.github</groupId>
            <artifactId>site-maven-plugin</artifactId>
            <version>0.12</version>
            <executions>
                <execution>
                    <goals>
                        <goal>site</goal>
                    </goals>
                    <!-- select the Maven phase in which the plugin will be executed -->
                    <phase>deploy</phase>
                    <configuration>
                        <!-- Plugin configuration goes here -->
                        <server>github</server>
                        <!-- The commit message -->
                        <message>init git maven repository</message>
                        <!-- The location where the site is uploaded -->
                        <repositoryName>github-maven-repository</repositoryName> <!-- github repo name -->
                        <repositoryOwner>flydean</repositoryOwner> <!-- organization or user name  -->
                        <!-- Use merge or override the content -->
                        <merge>true</merge>
                        <outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>
                        <branch>refs/heads/mvn-repo</branch>
<!--                        <includes>-->
<!--                            <include>**/*</include>-->
<!--                        </includes>-->
                    </configuration>
                </execution>
            </executions>
        </plugin>


使用中要注意下面几点:


  1. site-maven-plugin的goals是site,它需要跟maven的deploy phase相关联,从而在我们执行mvn deploy的时候自动运行site-maven-plugin。
  2. github的权限配置,我们可以在configuration中设置server=github,也可以配置下面的全局变量:


<properties>
        <github.global.server>github</github.global.server>
    </properties>


  1. 需要指定repositoryName和repositoryOwner,否则会报错。
  2. message表示的是提交到github的消息。
  3. 默认情况下的提交到github中的branch是refs/heads/gh-pages,这里我们自定义了一个。


好了,一切都配置完了,我们可以运行了mvn deploy:


image.png


从上图可以看到,github上面已经有了一个可共享的项目了。


怎么使用这个共享的项目


使用起来很简单,只需要在pom.xml文件中添加相应的依赖和repository即可:


<dependency>
    <groupId>YOUR.PROJECT.GROUPID</groupId>
    <artifactId>ARTIFACT-ID</artifactId>
    <version>VERSION</version>
</dependency>
<repository>
    <id>ARTIFACT-ID</id>
    <url>https://raw.github.com/flydean/github-maven-repository/mvn-repo/</url>
</repository>


总结


Github带给我们的福利,赶紧用起来吧。

相关文章
|
7月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
19天前
|
开发工具 git C++
【够用就好002】外行第一次发布github项目仓库
#deepseek#自学 记录外行学习代码的历程 今天是上传自己的工具代码到github仓库,一直以来是伸手党克隆别人的项目,今天在deepseek的辅导下上传自己的内容。
|
2月前
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
209 69
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
2月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
115 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
PeterCat 是一款开源的智能答疑机器人,能够自动抓取 GitHub 上的文档和 issue 构建知识库,提供对话式答疑服务,帮助开发者和社区维护者高效解决技术问题。
244 7
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
|
3月前
|
人工智能 前端开发 Linux
github是怎么用的,如何下载仓库
github是怎么用的,如何下载仓库
|
5月前
|
对象存储
一个通过 GitHub Action 将 GitHub 仓库与阿里云 OSS 完全同步的脚本
一种将 GitHub 仓库完全同步到阿里云 OSS 的方法。
|
7月前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
163 0
Github代码仓库SSH配置流程
|
7月前
|
网络协议 Shell 网络安全
开发工具使用之 github 私人仓库Clone 失败的问题
这篇文章介绍了解决GitHub上私人仓库克隆失败的问题,通过检查本地SSH key的存在与否、生成新的SSH key、添加SSH key到GitHub以及使用SSH方式克隆私有仓库的步骤来解决这个问题。
开发工具使用之 github 私人仓库Clone 失败的问题
|
7月前
|
人工智能 算法 机器人
Github上5个实用的ChatGPT仓库
Github上5个实用的ChatGPT仓库
202 0

热门文章

最新文章

推荐镜像

更多