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

如何在不修改m2 settings.xml的情况下阻止Maven从私有Nexus下载构件?

解决Maven跳过私有Nexus仓库下载构件的问题

问题分析

  1. 你配置的maven-deploy-plugin的<skip>true</skip>是用来跳过部署阶段的,和依赖下载完全无关,所以这个配置对你的问题没有帮助。
  2. Maven会自动合并本地settings.xml、父POM以及当前POM中的仓库配置,即使你在当前POM中添加了中央仓库,私有Nexus仓库依然会被优先使用。
  3. 另外,你的javafx依赖配置有误:org.openjfx:javafx:21.0.1是POM类型构件,不是JAR,这也是构建失败的原因之一。

解决方案

方案一:在当前POM中完全覆盖仓库配置

显式禁用所有私有Nexus仓库,只保留中央仓库,同时修复javafx依赖:

修改后的POM关键部分如下:

<repositories>
    <!-- 禁用所有私有Nexus仓库 -->
    <repository>
        <id>nexus-public</id>
        <url>https://xxxxx.com/nexus/repository/public/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
    <repository>
        <id>releases</id>
        <url>https://xxxxx.com/nexus/repository/releases/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
    <repository>
        <id>perso-tmp-hack</id>
        <url>https://xxxxx.com/nexus/repository/perso-tmp-hack/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
    <!-- 仅启用中央仓库 -->
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
</repositories>

<!-- 插件仓库也需要同步配置,避免插件从私有Nexus下载 -->
<pluginRepositories>
    <pluginRepository>
        <id>nexus-public</id>
        <url>https://xxxxx.com/nexus/repository/public/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>releases</id>
        <url>https://xxxxx.com/nexus/repository/releases/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>perso-tmp-hack</id>
        <url>https://xxxxx.com/nexus/repository/perso-tmp-hack/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </pluginRepository>
</pluginRepositories>

<dependencies>
    <!-- 修复javafx依赖:指定为POM类型,或者引入具体模块 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx</artifactId>
        <version>21.0.1</version>
        <type>pom</type>
    </dependency>
    <!-- 或者按需引入具体模块 -->
    <!--
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>21.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>21.0.1</version>
    </dependency>
    -->
</dependencies>

方案二:使用命令行参数指定临时配置

如果无法修改POM,或者配置后仍不生效,可以通过命令行指定仅使用中央仓库:

  1. 创建临时settings.xml文件(如果允许创建文件):
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
    <profiles>
        <profile>
            <id>only-central</id>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>https://repo.maven.apache.org/maven2</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>https://repo.maven.apache.org/maven2</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>only-central</activeProfile>
    </activeProfiles>
</settings>

然后运行命令:

mvn clean install --settings /path/to/your/temp-settings.xml
  1. 直接通过命令行参数指定仓库:
    无需创建文件,直接运行:
mvn clean install -DaltRepository=central::default::https://repo.maven.apache.org/maven2

关键说明

  • Maven的仓库配置是继承+合并的机制,必须显式禁用不需要的仓库才能避免被使用。
  • javafx的根依赖是POM类型,不能直接作为JAR依赖引入,要么指定<type>pom</type>,要么引入具体的功能模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:48:10