You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Maven依赖下载403错误:配置POM适配JRuby Complete版本或中央仓库

解决Maven依赖缺失与仓库Fallback的问题

我来帮你搞定这个依赖下载的问题,你遇到的是传递依赖版本缺失+仓库配置的典型场景,有两个实用的解决方案:

一、强制覆盖JRuby Complete的版本

因为asciidoctor-java-integration 0.4依赖的jruby-complete 1.7.4在公司仓库不存在,你可以通过Maven的dependencyManagement节点全局指定一个公司仓库可用的JRuby版本,这样所有传递依赖都会优先使用你指定的版本,彻底绕过缺失的1.7.4版本。

在你的项目POM中添加以下配置:

<dependencyManagement>
    <dependencies>
        <!-- 覆盖传递依赖的JRuby版本,替换成公司仓库存在的版本 -->
        <dependency>
            <groupId>org.jruby</groupId>
            <artifactId>jruby-complete</artifactId>
            <version>1.7.27</version> <!-- 这里换成你确认可用的版本号 -->
        </dependency>
    </dependencies>
</dependencyManagement>

注意:替换版本前最好确认一下这个版本和asciidoctor-java-integration 0.4的兼容性,避免出现运行时问题,小版本升级一般不会有太大问题。

二、配置仓库Fallback到Maven中央仓库

如果不想替换版本,或者公司仓库缺少其他依赖时也需要自动 fallback,你可以配置Maven的仓库顺序,让它先查公司仓库,找不到再去中央仓库拉取。

方案1:在项目POM中配置仓库

直接在你的项目POM里添加仓库配置,确保公司仓库优先级高于中央仓库:

<repositories>
    <!-- 公司内部仓库,优先级最高 -->
    <repository>
        <id>company-internal-repo</id>
        <url>http://your-company-repo-url</url> <!-- 替换成实际的公司仓库地址 -->
        <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <!-- Maven中央仓库作为 fallback -->
    <repository>
        <id>maven-central</id>
        <url>https://repo1.maven.org/maven2</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

方案2:在settings.xml中配置(全局生效)

如果你的团队统一使用settings.xml,你可以调整其中的镜像或仓库配置,比如:

<!-- 配置仓库列表 -->
<repositories>
    <repository>
        <id>company-internal-repo</id>
        <url>http://your-company-repo-url</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
    <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>

<!-- 如果有镜像代理,调整mirrorOf规则,避免拦截中央仓库 -->
<mirrors>
    <mirror>
        <id>company-mirror</id>
        <mirrorOf>company-internal-repo</mirrorOf> <!-- 只代理公司仓库 -->
        <url>http://your-company-mirror-url</url>
    </mirror>
</mirrors>

提示:如果公司的镜像配置是mirrorOf=*,可能需要联系运维调整镜像规则,或者在settings.xml中添加激活中央仓库的profile。

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

火山引擎 最新活动