全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 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 加密密码
  • 最小权限原则,定期更换凭据
  • 可使用环境变量存储敏感信息

📝 发现内容有误?点击此处直接编辑

← 上一篇 中央仓库与镜像配置
下一篇 → 快照仓库行为
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库