Skip to content
个人作品推荐
栾媛爱动物
播放动物叫声趣味微信小程序
栾媛爱动物微信小程序
微信扫码体验

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 构建默认使用,服务器构建账号同理)。

xml
<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.gradlesettings.gradle.kts 中声明仓库(仅本仓库生效,可提交 Git):

groovy
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 机器全局环境):

bash
export GOPROXY=http://data-oceanus.ly.cn/artifactory/go_official_remote/
# 内网若无法访问 sum.golang.org 校验,可关闭校验(仅建议开发环境按需使用):
# export GOSUMDB=off
# 或仅对指定模块跳过校验(示例):
# export GONOSUMDB="github.com/your-org/*"

长期生效(写入 Go 用户级配置文件,新开终端仍生效):

bash
go env -w GOPROXY=http://data-oceanus.ly.cn/artifactory/go_official_remote/

整机/服务级(多用户)可在 /etc/profile.d/*.shsystemdEnvironment=、容器 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 buildgo test 等:在需要时自动拉取尚未缓存的模块。

默认 go mod download 几乎无输出,看起来像「一直在后台下」。要看过程可以:

  • go mod download -x:打印实际执行的命令(如对 git、代理的请求等),便于确认在拉哪些模块、卡在哪一步。
  • go mod download -json:每行输出一个模块的 JSON(含 PathVersionError 等),适合逐条对照或脚本解析。

编译阶段想看正在编译的包,可用 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 一致),例如:

ini
registry=http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/

Yarn(Berry / 2+) 还可用 .yarnrc.ymlpnpm 可在项目 .npmrcpnpm-workspace.yaml 同目录策略中指定(仍以 registry 为准)。

3.2 本机 / 服务器(全局)配置

写入当前用户 npm 配置(默认落在用户主目录下的 ~/.npmrc),整台机器上该用户的所有未覆盖项目都会使用:

npm / npx

bash
npm config set registry "http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/"
npm config get registry

Yarn(classic)

bash
yarn config set registry "http://data-oceanus.ly.cn:80/artifactory/api/npm/npm_virtual/"

pnpm

bash
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)执行:

  • npmnpm install(按 package.json / package-lock.json 安装);CI 或需严格复现锁文件时用 npm ci(要求存在 package-lock.json)。
  • Yarn(classic)yarn installyarn
  • pnpmpnpm 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/
Bundlerbundlehttp://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 本机 / 服务器(全局)

bash
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,可提交或由各环境生成):

bash
bundle config set mirror.https://rubygems.org http://data-oceanus.ly.cn/artifactory/bundler_offical_remote/

也可在 Gemfile 首行 source 与团队约定一致(需与 mirror 策略一致)。

4.2.2 本机 / 服务器(全局)

为当前用户固定 Bundler mirror(构建机、服务器账号执行一次):

bash
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 DIRECTORYGEM PATHS;用户级安装常见在 ~/.gem/ruby/<版本>/ 等路径下。
  • Bundler:若执行过 bundle config set path 'vendor/bundle'(或项目约定),依赖位于项目目录下的 vendor/bundle;否则 gem 仍安装到上述 gem 环境路径(以 bundle env / gem env 为准)。