如何使用后备存储库配置maven

问题描述 投票:0回答:1

我的情况: 我基本上需要客户端实现 Artifactory 虚拟存储库。

我们被迫使用 GitLab(自托管)来管理每个项目的包,并使用完全不同的包管理器(nexus)来管理公共工件。由于本次讨论之外的各种原因,在 nexus 中使用组存储库是不可能的。

这意味着我必须配置 Maven 客户端来解析具有 2 个不同存储库的包:因此,像

org.apache.*
这样的东西将使用 Maven Central 进行解析,而
com.mycompany
将使用项目特定的存储库进行解析。我需要/想要这样做,这样它就超级便携且简单,因此它可以在用户计算机上构建或在 CI/CD 管道中构建,该管道也在从 1 个 GL 实例移动到另一个实例的过程中。

这个想法是,当我输入

mvn install
时,它将检查 Maven Central,发现 GAV
FOO:BAR:1.0.0
不存在并回退到内部存储库。

我知道这些工件没问题,因为在我的测试中我已经镜像到*,并创建了一个虚拟/组存储库。我现在知道我不能这样做,因此我需要在客户端配置这种行为。

如何实现这一目标?

java maven
1个回答
0
投票

除非我没有正确理解这个问题,否则这是 Maven 的基本功能。您可以在 pom 或设置文件中定义

repositories
元素,并根据需要在其中列出任意数量的
repository
。在 pom 中这样做会更便携:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

...
<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
    <repository>
        <id>jitpack</id>
        <url>https://jitpack.io</url>
    </repository>
    <repository>
        <id>company-repo</id>
        <url>https://repo.company.com/maven2</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>example-library</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>
© www.soinside.com 2019 - 2024. All rights reserved.