You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建依赖JFrog库的Spring Boot微服务Docker镜像时遇401错误

构建Spring Boot微服务Docker镜像时JFrog仓库401未授权问题

我在为使用JFrog依赖库的Spring Boot微服务(XMDService)构建Docker镜像时,遇到401未授权错误。已在pom.xml中配置JFrog仓库及相关依赖,且将settings.xml复制到当前目录,但问题依旧。

相关配置代码

pom.xml片段

<properties>
    <java.version>11</java.version>
    <spring-cloud.version>2021.0.3</spring-cloud.version>
</properties>

<repositories>
    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>maven2</name>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>xtgcentral</id>
        <name>xtplatformlibraries-libs-release-local</name>
        <url>https://xtintech.jfrog.io/artifactory/xtplatformlibraries-libs-release-local</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.xtintech.xal</groupId>
        <artifactId>xalservicesapi</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.xtintech.xal</groupId>
        <artifactId>xalplatformlibraries</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.xtintech.xal</groupId>
        <artifactId>simulatorxmdiserviceapi</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.xtintech.xpl</groupId>
        <artifactId>loggingframework</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.xtintech.xpl</groupId>
        <artifactId>platformapi</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

Dockerfile

# syntax=docker/dockerfile:1

FROM eclipse-temurin:17-jre-jammy

COPY .mvn/ .mvn
COPY mvnw pom.xml ./
COPY mvnw settings.xml ./
RUN ./mvnw -s settings.xml dependency:resolve

COPY src ./src

CMD ["./mvnw", "spring-boot:run"]

排查与修复步骤

1. 确保settings.xml仓库ID与pom.xml完全匹配

pom.xml中JFrog仓库的ID为xtgcentral,settings.xml的<server>节点ID必须完全一致,认证信息配置示例:

<servers>
  <server>
    <id>xtgcentral</id>
    <username>你的JFrog用户名</username>
    <password>你的JFrog密码/API密钥</password>
  </server>
</servers>

注意:JFrog的认证信息只能放在settings.xml中,pom.xml无法配置仓库认证。

2. 修正Dockerfile的复制错误

原Dockerfile中重复复制了mvnw,导致文件覆盖,调整为:

COPY mvnw pom.xml settings.xml ./

3. 匹配依赖版本与仓库类型

pom.xml中配置的JFrog仓库禁用了快照包拉取,但所有自定义依赖都是SNAPSHOT版本,需二选一:

  • 开启当前仓库的快照支持:将<snapshots><enabled>false</enabled></snapshots>改为true
  • 添加JFrog快照仓库配置:
<repository>
  <id>xtgcentral-snapshots</id>
  <name>xtplatformlibraries-libs-snapshot-local</name>
  <url>https://xtintech.jfrog.io/artifactory/xtplatformlibraries-libs-snapshot-local</url>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

同时在settings.xml中为xtgcentral-snapshots配置对应认证信息。

4. 启动命令也需指定settings.xml

Dockerfile的CMD命令未指定settings.xml,启动时会使用默认配置,修改为:

CMD ["./mvnw", "-s", "settings.xml", "spring-boot:run"]

5. 先验证本地构建是否正常

在本地执行./mvnw -s settings.xml dependency:resolve,确认能正常拉取JFrog依赖。若本地失败,优先排查settings.xml的用户名、密码、仓库ID是否正确。

内容的提问来源于stack exchange,提问作者mijose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:40:47