文章目录
  1. 1. GitHub
  2. 2. 七牛云存储
  3. 3. 又拍云

上一篇博文中,主要介绍了Maven仓库搭建原理,除了Nexus外,随意使用一个HTTP服务器,例如Tomcat或Nginx,都可搭建一个自己的Maven仓库。

无论是用Nexus还是HTTP服务器搭建Maven仓库,总归需要一台服务器,一台服务器需要花钱买和花时间维护,成本比较大。Nexus一般是公司用的比较多,个人不推荐使用。本文就是介绍一些适合个人搭建Maven仓库的方式,相对来说比Nexus更方便、费用更低(基本是免费的)。

GitHub

首先在GitHub上新建一个repository,例如命名为maven-repo,用来当做Maven仓库。

再将需要上传到仓库的项目用mvn deploy命令生成需要上传的文件(例如jar、pom、md5、sha1等各种文件)。在该项目的pom.xml中加入:

1
2
3
4
5
6
<distributionManagement>
<repository>
<id>file-repository</id>
<url>file://D:\abc</url>
</repository>
</distributionManagement>

配置中url是文件生成的目录。运行mvn deploy命令,会在D:\abc目录下生成一个所需要上传到仓库的文件:
mvn deploy生成的文件

接下来需要把这些文件上传到GitHub上,这一步如果会使用git命令的话应该会非常熟悉。进入D:\abc目录,运行以下命令将文件提交到GitHub:

1
2
3
4
5
git init
git add -A
git commit -m "first commit"
git remote add origin https://github.com/wucao/maven-repo.git
git push -u origin master

此时就可以在GitHub上看到这些文件:
GitHub提交成功

参考我的GitHub个人仓库:https://github.com/wucao/maven-repo

GitHub项目对应的文件HTTP下载URL根目录是:
https://raw.githubusercontent.com/wucao/maven-repo/master/
路径是用户名+GitHub仓库名+分支。

现在Maven仓库已经可以立即使用了:

1
2
3
4
<repository>
<id>my-repository</id>
<url>https://raw.githubusercontent.com/wucao/maven-repo/master</url>
</repository>

例如在pom.xml中加上:

1
2
3
4
5
<dependency>
<groupId>com.xxg.cloudstorage</groupId>
<artifactId>cloudstorage</artifactId>
<version>1.0.0</version>
</dependency>

实际上Maven会根据<repository>中的URL加上<dependency>中的groupId、artifactId、version生成一个完整的文件下载的HTTP地址,例如生成的jar包下载地址:
https://raw.githubusercontent.com/wucao/maven-repo/master/com/xxg/cloudstorage/cloudstorage/1.0.0/cloudstorage-1.0.0.jar

七牛云存储

除了GitHub之外,七牛云存储也是一种几乎免费的Maven仓库的方案。七牛提供每月10G流量和10G存储空间,一般来说很够用了。

首先还是需要通过mvn deploy生成所需要上传的文件,步骤和上面GitHub搭建仓库一致,不同的是生成的文件不是上传到GitHub仓库,而是上传到七牛云存储。可以下载使用七牛提供的文件同步工具将目录同步到七牛上,具体使用文档:
http://developer.qiniu.com/code/v6/tool/qrsync.html

下载完成后将conf.json配置中的文件同步目录、七牛的bucket、accessKey、secketKey修改为自己的配置:

1
2
3
4
5
{
"src": "D:\\abc",
"dest": "qiniu:access_key=<AccessKey>&secret_key=<SecretKey>&bucket=<Bucket>",
"debug_level": 1
}

运行qrsync即可上传目录下所有文件到七牛云。

在其他项目中配置七牛云的对外域名,上传到七牛云的jar包就可以在其他项目中直接使用了:

1
2
3
4
<repository>
<id>my-repository</id>
<url>http://o8sw7lrki.bkt.clouddn.com/</url> <!-- 这里配置七牛云的对外HTTP地址 -->
</repository>

除了七牛之外,阿里云对象存储OSS、腾讯云对象存储服务COS等也都是不错的选择,原理和七牛类似。

又拍云

又拍云和七牛云原理差不多,这里单独拉出来介绍,是因为又拍云提供了FTP文件上传。Maven Deploy插件可以直接在运行mvn deploy命令时将文件上传到FTP服务器上。

首先根据又拍云文档,拿到FTP服务器的地址、用户名和密码:
http://docs.upyun.com/guide/#ftpftps
地址:v0.ftp.upyun.com
用户名:操作员名/服务名
密码:操作员的密码

然后根据Maven Deploy插件的文档:
https://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html

将以下配置加到pom.xml中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<project>
...
<distributionManagement>
<repository>
<id>ftp-repository</id>
<url>ftp://v0.ftp.upyun.com</url>
</repository>
</distributionManagement>

<build>
<extensions>
<!-- Enabling the use of FTP -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>2.10</version>
</extension>
</extensions>
</build>
...
</project>

在settings.xml中加入FTP的用户名和密码:

1
2
3
4
5
6
7
8
9
10
11
<settings>
...
<servers>
<server>
<id>ftp-repository</id>
<username>操作员名/服务名</username>
<password>操作员的密码</password>
</server>
</servers>
...
</settings>

这样直接运行mvn deploy命令,文件就直接上传到又拍云上了,相对七牛云来说方便很多。

文章目录
  1. 1. GitHub
  2. 2. 七牛云存储
  3. 3. 又拍云