自建的简易缓存仓库

文章发布时间:

最后更新时间:

自建的简易缓存仓库

| 码云仓库 | 个人Git仓库 |
支持 :maven、alpine、Docker
说明 :通过缓存形式提高仓库的拉取速度。如果本地不存在对应的缓存文件,则会从${res.config.*.remote-url}
指定的仓库获取资源文件进行本地缓存,下载的时候会同时传递给请求方。如果已存在,则直接从缓存文件获取。
服务不设置缓存过期事件,因为文件名称中存在版本信息,因此缓存文件不设置过期机制。

当前功能

  • 实现 maven deploy 对应的功能
  • 实现 maven 拉取依赖包的功能
  • 实现 alpine 拉取依赖包的功能

关于 maven deploy 的设置

  1. res.config.params.maven.is-deploy 设置为true,开启deploy功能
  2. 需要在yaml中分别设置 res.config.params.maven.usernameres.config.params.maven.password
  3. .m2/settings.xml 中设置 <servers> 对应的用户密码信息。
  4. 在工程pom.xml中设置 <distributionManagement> 对应的仓库信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- settings.xml 中的设置内容,server 标签为重点,其他为参考 -->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>mirror</id>
<mirrorOf>*</mirrorOf>
<name>mirror</name>
<url>http://192.168.9.31:8080/res/maven/agent/cache/</url>
</mirror>
</mirrors>
<servers>
<server>
<id>my-LibraryCache</id>
<username>Trevet</username>
<password>123456</password>
</server>
</servers>
1
2
3
4
5
6
7
<!-- pom.xml中的设置 -->
<distributionManagement>
<repository>
<id>my-LibraryCache</id>
<url>http://localhost:8080/res/maven/agent/upload</url>
</repository>
</distributionManagement>

编译

编译结果:target/library-cache-server-${version-info}.jar

1
mvn clean package 

运行

命令行运行

1
2
3
4
5
6
7
8
9
10
11
# res.config.maven.remote-url 指定Maven阿里云仓库
# res.config.alpine.remote-url 指定Alpine阿里云仓库

# res.config.maven.cache-path 指定Maven缓存目录
# res.config.alpine.cache-path 指定Alpine缓存目录
java -jar \
-Dres.config.maven.remote-url=https://maven.aliyun.com/repository/releases \
-Dres.config.alpine.remote-url=https://mirrors.aliyun.com/alpine \
# http代理相关设置.
-Dhttp.proxyHost=192.168.9.125 -Dhttp.proxyPort=7890 \
library-cache-server-0.0.2.jar

或者简单运行

1
java -jar library-cache-server-0.0.2.jar

前置说明

运行环境
IP地址:192.168.2.115
端口:8080
Context-Path:/res

Maven配置文件设置方式

settings.xml 文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>mirror</id>
<mirrorOf>*</mirrorOf>
<name>mirror</name>
<url>http://192.168.9.31:8080/res/maven/agent/cache/</url>
</mirror>
</mirrors>
</settings>

Alpine配置设置方式

指定仓库且安装openjdk8
PS : 注意事项.1
cat /etc/alpine-release执行结果为3.16.1
有些仓库统一使用大版本,例如:3.16.1实际为3.16
因此cat /etc/alpine-release组成的参数可能无效。

PS : 注意事项.2
如果需要将本工具放置到内网,需要将APKINDEX.tar.gz索引包放入对应的缓存路径中.
默认情况下,本工具是可以访问外网的。

1
2
3
echo http://192.168.9.31:8080/res/alpine/agent/cache/v`cat /etc/alpine-release`/main/ > /etc/apk/repositories 
echo http://192.168.9.31:8080/res/alpine/agent/cache/v`cat /etc/alpine-release`/community/ >> /etc/apk/repositories
apk update && apk upgrade && apk add openjdk8