如果内部存储库中不可用,则需要从 MavenCentral 下载工件

Need to download artifacts from MavenCentral if it is not available in the internal repository

我在 settings.xml 上进行了以下配置以获取组织的内部工件。

<mirrors>
    <mirror>
        <id>internal-repository-1</id>
        <url>http://local.host/repository/internal/</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

通常它具有构建内部项目的所有工件。但我想从 MavenCentral 下载一些其他工件。由于我使用的是上述镜像配置,因此它不会检查 MavenCentral 上的工件。

我想知道是否有任何方法可以通过修改 settings.xml

从 MavenCentral 下载工件,如果它在我们的内部存储库中不可用

我已经参考了以下问题,但没有帮助。

maven repository mirrors

Can I add maven repositories in the command line?

您的内部存储库可能是 Nexus 或 Artifactory。只需将 MavenCentral 添加为内部存储库中的代理存储库。然后您将能够通过内部存储库从 MavenCentral 访问所有内容。

如果您的内部仓库不想代理到 Maven 中央仓库,您可以禁用对中央仓库的请求,例如:

<mirrors>
    <mirror>
        <id>internal-repository-1</id>
        <url>http://local.host/repository/internal/</url>
        <mirrorOf>*,!central</mirrorOf>
    </mirror>
</mirrors>

确保您将中央存储库声明为存储库列表中的最后一个,因为 Maven 3 从上到下搜索并且您希望中央存储库成为后备。

如果有人遇到同样的问题,将以下代码块放入 settings.xml 也有效。

<profiles>
    <profile>
        <id>profile-1</id>
        <repositories>
            <repository>
                <id>internal-repository-1</id>
                <url>http://local.host/repository/internal/</url>
            </repository>
        </repositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>profile-1</activeProfile>
</activeProfiles>