Java、Go、Node.js、Ruby 内网源
说明:项目配置仅作用于当前仓库/构建(可提交到 Git,团队一致);本机 / 服务器(全局)配置作用于当前用户或整台机器(如 ~/.xxx、系统环境变量、CI 任务环境),适合开发机一次配置或服务器统一镜像。
1. Java
1.1 Maven
1.1.1 项目配置
仅作用于当前项目:在仓库根目录使用 .mvn/settings.xml(与 pom.xml 同级,可提交到 Git,CI 也会读),用于团队统一内网源。
也可在 pom.xml 中声明 <repositories> / <pluginRepositories>(侵入性较大,一般优先 .mvn/settings.xml)。
内容与下节「本机 / 服务器(全局)」中的 settings.xml 片段相同,仅文件位置不同。
1.1.2 本机 / 服务器(全局)配置
用户级 Maven 配置: ~/.m2/settings.xml(该用户在本机上的所有 Maven 构建默认使用,服务器构建账号同理)。
<settings>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>ly_jfrog</name>
<url>http://data-oceanus.ly.cn/artifactory/maven_offical_remote/</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>ly_jfrog</name>
<url>http://data-oceanus.ly.cn/artifactory/maven_offical_remote/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>ly_jfrog</name>
<url>http://data-oceanus.ly.cn:80/artifactory/maven_plugin_remote/</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>ly_jfrog</name>
<url>http://data-oceanus.ly.cn:80/artifactory/maven_plugin_remote/</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>1.2 Gradle
1.2.1 项目配置
在 settings.gradle 或 settings.gradle.kts 中声明仓库(仅本仓库生效,可提交 Git):
pluginManagement {
repositories {
maven {
url 'http://data-oceanus.ly.cn:80/artifactory/maven_plugin_remote/'
allowInsecureProtocol true
}
maven {
url 'http://data-oceanus.ly.cn:80/artifactory/plugin_gradle_remote/'
allowInsecureProtocol true
}
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven {
url 'http://data-oceanus.ly.cn:80/artifactory/maven_offical_remote/'
allowInsecureProtocol true
}
}
}
// sign-off-backend 只是案例,可以替换成实际项目名
rootProject.name = 'sign-off-backend'1.2.2 本机 / 服务器(全局)配置
作用于当前用户下所有 Gradle 构建:在 ~/.gradle/init.gradle(或 $GRADLE_USER_HOME/init.gradle)中统一 repositories;或在 ~/.gradle/gradle.properties 中配置与代理相关的属性。适合服务器构建账号一次配置、多项目共用。
1.3 下载依赖到本地(Java)
- Maven(项目根目录含
pom.xml):mvn dependency:resolve解析并下载依赖到本地仓库;或mvn compile/mvn package在构建过程中拉取。需离线构建可用mvn dependency:go-offline(依项目与插件而定)。 - Gradle(项目根目录含
build.gradle/build.gradle.kts):./gradlew build或./gradlew compileJava等任务会在首次执行时拉取依赖;查看依赖解析情况可用./gradlew dependencies(Windows 使用gradlew.bat)。
1.4 依赖下载后存到哪(Java)
- Maven:本地仓库默认
~/.m2/repository;可在settings.xml中通过<localRepository>覆盖。 - Gradle:用户数据根目录由
GRADLE_USER_HOME决定(未设置时一般为~/.gradle),下载的依赖与元数据缓存在其下的caches/(常见如caches/modules-2/files-2.1/)。
2. Go
仓库根地址: http://data-oceanus.ly.cn/artifactory/go_official_remote/
2.1 项目配置
Go 没有类似 .npmrc 的单文件把 GOPROXY 固定进仓库;常见做法:
- CI / 流水线:在任务步骤里
export GOPROXY=...(仅该 job / 该次构建生效)。 - 本机按目录生效:用 direnv(
.envrc)、Makefile / 脚本先export再执行go build。 - 依赖本身:仍以
go.mod/go.sum为准;内网源只影响从哪里下载,不改变模块路径语义。
2.2 本机 / 服务器(全局)配置
内网 Go Module 代理(GOPROXY)指向上述地址。以下方式作用于当前用户或当前 shell(开发机一次配置;服务器上常写入构建账号的 profile、或 CI 机器全局环境):
export GOPROXY=http://data-oceanus.ly.cn/artifactory/go_official_remote/
# 内网若无法访问 sum.golang.org 校验,可关闭校验(仅建议开发环境按需使用):
# export GOSUMDB=off
# 或仅对指定模块跳过校验(示例):
# export GONOSUMDB="github.com/your-org/*"长期生效(写入 Go 用户级配置文件,新开终端仍生效):
go env -w GOPROXY=http://data-oceanus.ly.cn/artifactory/go_official_remote/整机/服务级(多用户)可在 /etc/profile.d/*.sh、systemd 的 Environment=、容器 ENV 等注入相同环境变量。
2.3 export GOPROXY=... 与 go env -w GOPROXY=... 的区别
export GOPROXY=... | go env -w GOPROXY=... | |
|---|---|---|
| 作用范围 | 仅当前 shell 会话及其子进程 | 写入用户级 Go 配置(路径见 go env GOENV) |
| 是否持久 | 关终端即失效;持久需写入 ~/.bashrc 等 | 持久,以后默认使用该值 |
| 适用场景 | 临时切换代理、脚本内单次构建 | 本机长期固定使用内网代理 |
优先级: 若同时设置了环境变量与 go env -w,环境变量优先(当前 shell 里的 export 会覆盖配置文件中的值)。
2.4 下载依赖到本地(Go)
拉依赖前可执行 go env GOPROXY 确认代理已指向内网。
go mod download:按go.mod(及go.sum)将模块下载到GOMODCACHE。go mod tidy:整理go.mod/go.sum并拉取缺失模块。go build、go test等:在需要时自动拉取尚未缓存的模块。
默认 go mod download 几乎无输出,看起来像「一直在后台下」。要看过程可以:
go mod download -x:打印实际执行的命令(如对git、代理的请求等),便于确认在拉哪些模块、卡在哪一步。go mod download -json:每行输出一个模块的 JSON(含Path、Version、Error等),适合逐条对照或脚本解析。
编译阶段想看正在编译的包,可用 go build -v(主要反映编译进度;依赖若已缓存则可能很快过完)。
2.5 依赖下载后存到哪(Go)
模块缓存目录由 GOMODCACHE 决定。
未设置时,默认一般为:
- Linux / macOS:
$HOME/go/pkg/mod
也可执行 go env GOMODCACHE 查看本机实际路径。
3. Node.js
仓库根地址: http://data-oceanus.ly.cn:80/artifactory/npm_virtual/
npm / Yarn / pnpm 的 registry 需使用 Artifactory 的 npm API 路径(与虚拟仓库 npm_virtual 对应):
http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/
3.1 项目配置
在仓库根目录放置 .npmrc(可提交 Git,团队与 CI 一致),例如:
registry=http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/Yarn(Berry / 2+) 还可用 .yarnrc.yml;pnpm 可在项目 .npmrc 或 pnpm-workspace.yaml 同目录策略中指定(仍以 registry 为准)。
3.2 本机 / 服务器(全局)配置
写入当前用户 npm 配置(默认落在用户主目录下的 ~/.npmrc),整台机器上该用户的所有未覆盖项目都会使用:
npm / npx
npm config set registry "http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/"
npm config get registryYarn(classic)
yarn config set registry "http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/"pnpm
pnpm config set registry "http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/"服务器上也可用 NPM_CONFIG_REGISTRY 环境变量覆盖(便于容器/ systemd 一次注入)。
3.3 下载依赖到本地(Node.js)
在项目根目录(含 package.json)执行:
- npm:
npm install(按package.json/package-lock.json安装);CI 或需严格复现锁文件时用npm ci(要求存在package-lock.json)。 - Yarn(classic):
yarn install或yarn。 - pnpm:
pnpm install。
3.4 依赖下载后存到哪(Node.js)
- npm:缓存目录由配置项
cache决定,执行npm config get cache查看;常见默认为~/.npm(Linux/macOS)。 - pnpm:全局内容寻址存储,执行
pnpm store path查看实际路径;Linux 上常见为~/.local/share/pnpm/store。 - Yarn(classic):执行
yarn cache dir查看;常见为~/.cache/yarn等。 - Yarn(Berry / 2+):与项目配置相关,默认常使用项目下的
.yarn目录(具体随nodeLinker等策略变化)。
项目内 node_modules/ 为当前工程安装的包;全局工具包安装位置见 npm root -g(npm)。
4. Ruby(Gems)
内网两套仓库需分开配置:gem 走 RubyGems 仓库,bundle / Bundler 走 Bundler 仓库(镜像 rubygems.org 时用后者)。
| 工具 | 仓库根地址(保留两种写法) |
|---|---|
| gem(RubyGems) | http://data-oceanus.ly.cn:80/artifactory/ruby_offical_remote/ |
Bundler(bundle) | http://data-oceanus.ly.cn/artifactory/bundler_offical_remote/ |
4.1 gem(RubyGems)配置
gem sources 等使用的 Gems API(在仓库根路径下的 API 形态):
http://data-oceanus.ly.cn:80/artifactory/api/gems/ruby_offical_remote/
4.1.1 本机 / 服务器(全局)
gem sources -l
gem sources --add http://data-oceanus.ly.cn:80/artifactory/api/gems/ruby_offical_remote/ --remove https://rubygems.org/也可在 ~/.gemrc 中配置 sources:(同上 API 地址)。
4.1.2 项目(可选)
gem 无强制项目内配置文件;团队可在 README / CI 脚本中写入与上文一致的 gem sources --add ...,与构建机全局配置保持一致即可。
4.2 Bundler(bundle)配置
将官方 rubygems.org 映射到内网 Bundler 仓库(mirror),使用:
http://data-oceanus.ly.cn/artifactory/bundler_offical_remote/
4.2.1 项目配置
在项目根目录执行(写入 .bundle/config,可提交或由各环境生成):
bundle config set mirror.https://rubygems.org http://data-oceanus.ly.cn/artifactory/bundler_offical_remote/也可在 Gemfile 首行 source 与团队约定一致(需与 mirror 策略一致)。
4.2.2 本机 / 服务器(全局)
为当前用户固定 Bundler mirror(构建机、服务器账号执行一次):
bundle config set --global mirror.https://rubygems.org http://data-oceanus.ly.cn/artifactory/bundler_offical_remote/4.3 下载依赖到本地(Ruby)
- Bundler(项目根目录含
Gemfile):bundle install,按Gemfile/Gemfile.lock安装 gem。 - gem:安装单个包时
gem install <gem名>(需已配置gem sources指向内网)。
4.4 依赖下载后存到哪(Ruby)
- gem:执行
gem env,查看INSTALLATION DIRECTORY、GEM PATHS;用户级安装常见在~/.gem/ruby/<版本>/等路径下。 - Bundler:若执行过
bundle config set path 'vendor/bundle'(或项目约定),依赖位于项目目录下的vendor/bundle;否则 gem 仍安装到上述 gem 环境路径(以bundle env/gem env为准)。
