使用 Github 搭建 maven 私服

1,663 阅读4分钟

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

前言

每次新建项目时都是从之前的项目中复制粘贴高频使用的代码?搭建项目架构时,复制各个老项目中的工具类和配置类?本文将在很大程度上让你避免使用烂大街的武技—CV大法。

本篇文章最主要的目的就是保证整个流程的顺利完成,所以文章中用到的示例都是最简单的;其实搭建maven私服还是有很多细节性东西的,但是那些东西放到下篇文章来说吧!下篇文章我自己还是期待的,因为有一个很有意思的知识点。

搭建maven仓库

1、登录github账户并如下图所示创建一个用于存储maven项目的仓库,取名为 maven-test,其中权限要设置为 public ,否则后面无法引入依赖。

Untitled.png

最好在创建时勾选“Add a README file”,原因是不勾选时无法获取仓库地址(可以头铁自己测试一下)。创建完成后,我获得的仓库地址是

[git@github.com](mailto:git@github.com):xinmachong/maven-test.git

该地址在后面(发布项目)会用到。

新建maven项目

有了代码提交的仓库,接下来就是敲代码了。

使用IDEA创建一个maven项目,由于我习惯性给前端的接口响应结构是:

{
		"code":200,
		"msg":"success",
		"data":"anything struct"
}

所以我在项目中创建了我日常项目中常用的响应体,其目的就是:以后新建任意项目我都不用重复写这一块代码了。

Untitled.png

本篇文章最主要的目的就是保证整个流程的顺利完成,前面已经说过了,所以现在我的这个maven项目的东西就只有这么一点。接下来就是发布项目了。

发布项目

利用git初始化本地仓库,添加远端git仓库地址(即前文获得的仓库地址)

首先在任意位置新建一个文件夹,例如我的就是 G:\GitHub\maven-test;然后使用git执行如下命令:

git init
git remote add origin [git@github.com](mailto:git@github.com):xinmachong/maven-test.git

再利用mvn deploy将artifects发布至刚刚创建的git本地仓库中

mvn deploy -DaltDeploymentRepository=${distribute_id}::default::file:${git_repo_path}

Untitled.png

其中,{distribute_id}对应pom文件中distributionManagement/repository/id 处需要填写的内容,可随意填写,但是此处需要和文章后面使用的 id 一致。${git_repo_path}对应的是本地仓库地址G:\GitHub\maven-test。

此时打开本地仓库可以看到两个文件夹.git和自己命名的packag—com。如下图所示:

Untitled.png

将需要发布对应版本的artifects提交至本地git仓库中,然后push至对应的分支master

git add com/*
git commit -m "deploy maven-test"
git push origin master

如果发布成功,可以在github上看到提交的内容如下所示:

Untitled.png

引入依赖并测试

所有的操作已经完成,接下来就是验证成果了。新建一个spring boot项目,在pom.xml中添加个人仓库,其中 id 就是前文的${distribute_id}对应的xinmachong,url 不是仓库的地址,而是raw.github.com/username/仓库…

<repositories>
    <repository>
        <id>xinmachong</id>
        <url>https://raw.github.com/xinmachong/maven-test/master</url>
    </repository>
</repositories>

再引入依赖

<dependencies>
    <dependency>
        <groupId>com.xinmachong</groupId>
        <artifactId>maven-test</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

此处的相关信息都可以在 maven-metadata.xml中找到,如下图所示:

Untitled.png

最后在控制层写一个测试接口

Untitled.png

从上图可以看到,我并未在项目中创建对象ApiResponse,但是可以直接new。从import com.xinmachong.response.ApiResponse;中可以看到,刚刚的maven项目中的对象被我们成功调用了。以后所有的新项目都不用重复造接口响应体的轮子了,只要引入自己的依赖就可以了。

我就想问一下,屌不屌?

好吧,我就是认真的开个玩笑。由于我使用的示例非常简单,所以会掩盖搭建自己maven仓库的过程中的很多疑难点,假如现在我们每个项目都要使用JWT,所以自然而然的想进一步打包JWT的功能,但是JWT中的签名和有效期是写在配置文件中的,而且JWT会拦截所有未放行的接口做token验证,所以我就想问以下两个问题:

1、想和 JDBC 连接 MySQL 数据库一样自己配置用户名和密码一样,配置 JWT 的有效期和签名如何做?直接在maven项目中写个@Value(‘$某个属性’),然后新建的 spring boot 项目帮你自动注入到依赖包中?头铁的可以试试,反正我的一头包还没消肿呢。

2、拦截器写完打包后,如何在新项目中自动生效?在maven项目中写好,发布到github,引入依赖时就可以自动拦截?如此简单粗暴肯定行不通的,头铁的可以试试。

真正的解决方式看下一篇文章吧。。。