首页/ 学科题库/ maven/ 仓库认证与安全
maven 实战教程

仓库认证与安全

2026-05-23 约 5 分钟 juanwangdev

仓库认证与安全

私有仓库需要认证,敏感凭据不应写入 pom.xml。

认证配置位置

安全原则

配置位置推荐说明
pom.xml不推荐会暴露在版本库
settings.xml推荐仅本地存储
环境变量推荐不写文件

settings.xml 配置认证

基本配置

XML
<settings>
  <servers>
    <server>
      <id>nexus-releases</id>      <!-- 对应 repository id -->
      <username>admin</username>
      <password>password123</password>
    </server>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>password123</password>
    </server>
  </servers>
</settings>

server 元素说明

元素说明
id对应 repository 或 snapshotRepository 的 id
username登录用户名
password登录密码

POM 仓库声明

XML
<distributionManagement>
  <repository>
    <id>nexus-releases</id>        <!-- 与 server id 对应 -->
    <url>https://nexus.company.com/repository/maven-releases/</url>
  </repository>
  <snapshotRepository>
    <id>nexus-snapshots</id>       <!-- 与 server id 对应 -->
    <url>https://nexus.company.com/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>

id 必须与 settings.xml 中 server 的 id 一致。

密码加密

加密步骤

Bash
# 1. 创建加密主密码
mvn --encrypt-master-password masterpassword

输出:{jSMOWOXYRHV2pGcC}

配置主密码

settings-security.xml:

XML
<settingsSecurity>
  <master>{jSMOWOXYRHV2pGcC}</master>
</settingsSecurity>

加密实际密码

Bash
mvn --encrypt-password password123

输出:{O8U5srA=}

使用加密密码

XML
<server>
  <id>nexus</id>
  <username>admin</username>
  <password>{O8U5srA=}</password>
</server>

访问控制类型

类型说明
用户名密码基础认证
Token更安全,可撤销
SSH KeyGit 类型仓库

Token 认证示例

XML
<server>
  <id>github</id>
  <configuration>
    <githubToken>${env.GITHUB_TOKEN}</githubToken>
  </configuration>
</server>

权限控制

Nexus 权限模型

XML
用户 → 角色 → 权限 → 仓库

典型权限

权限说明
read查看下载
write上传发布
delete删除构件
admin管理配置

发布认证示例

settings.xml

XML
<settings>
  <servers>
    <server>
      <id>releases</id>
      <username>deployer</username>
      <password>deploy-pass</password>
    </server>
    <server>
      <id>snapshots</id>
      <username>deployer</username>
      <password>deploy-pass</password>
    </server>
  </servers>
</settings>

pom.xml

Bash
<distributionManagement>
  <repository>
    <id>releases</id>
    <url>https://nexus.company.com/releases</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <url>https://nexus.company.com/snapshots</url>
  </snapshotRepository>
</distributionManagement>

发布命令

XML
mvn deploy

安全最佳实践

推荐做法

做法说明
不在 pom.xml 写密码避免暴露到版本库
使用加密密码settings-security.xml
使用 Token比密码更安全
最小权限原则仅授予必要权限
定期更换密码降低泄露风险

环境变量认证

Bash
<server>
  <id>nexus</id>
  <username>${env.NEXUS_USER}</username>
  <password>${env.NEXUS_PASSWORD}</password>
</server>
text
export NEXUS_USER=admin
export NEXUS_PASSWORD=password
mvn deploy

要点总结

  • 认证配置在 settings.xml 的 servers 元素
  • id 必须与 repository 的 id 对应
  • 不在 pom.xml 写密码,避免暴露
  • 使用 mvn --encrypt-password 加密密码
  • 最小权限原则,定期更换凭据
  • 可使用环境变量存储敏感信息
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 快照仓库行为 下一篇 → mvn compile 与 clean