Maven-Go是一個由Go語言實現的簡易Maven倉庫,主要用于在低內存設備上部署,支持依賴上傳下載,鏡像外部倉庫并提供緩存
項目地址:Maven-Go
該項目借鑒了maven-manager, maven-manager使用java開發, 我在樹莓派上部署時, 發現內存實在捉急, 所以用Go重新實現了一遍
使用Docker部署
docker pull f763180872/maven-go:latest
docker run -d --name maven-go \
-v $PWD/config.yaml:/root/config.yaml \
-v $PWD/data:/data \
--restart always \
-p 8880:8880 \
f763180872/maven-go
config.yaml為啟動配置, 默認配置見配置文件說明
data為數據保存目錄
自編譯
本人使用的Go版本為: 1.18.3
git clone --depth 1 https://github.com/fanxcv/Maven-Go.git
cd Maven-Go
# 使用make編譯二進制文件
make
# 本地編譯docker鏡像
make docker
# 手動編譯命令
go mod tidy
go build -o MavenGo src/main.go
# 交叉編譯
# CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o MavenGo src/main.go
chmod a+x MavenGo
./MavenGo -c config.yaml
啟動參數
啟動時, 可以使用-c指定配置文件路徑, 默認加載同目錄下的config.yaml
配置文件說明
listen: 0.0.0.0 # 監聽地址
port: 8880 # 監聽端口
logging:
path: /data/log # 文件日志保存地址, 默認為空, 即不寫入文件
level: debug # 日志級別
context: maven # 基礎路徑
localRepository: /data/data # 本地倉庫地址
user: # 認證用戶配置, 支持多個
- name: user
password: password
repository: # 倉庫設置
- id: public # 倉庫ID
name: public repository # 名字, 隨意
mode: 4 # 模式, 0 無效 2 僅可寫 4 僅可讀 6 可讀寫
cache: true # 是否緩存鏡像文件, 默認不緩存
target: private # 數據目錄, localRepository的相對路徑, 默認取id值
mirror: # 鏡像地址, 會先嘗試在本地加載, 如果加載失敗, 會嘗試從鏡像依次讀取
- https://maven.aliyun.com/nexus/content/repositories/public
- https://repo1.maven.org/maven2
- id: private
name: private repository
mode: 2