提问者:小点点

为什么Maven不能识别带有使用Jenkins的父母的pom的自定义回购?


我有以下家长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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>...</groupId>
    <artifactId>core</artifactId>
    <packaging>pom</packaging>
    <version>0.0.12-SNAPSHOT</version>
    ...
</project>

这会安装到一个自定义的手工工厂存储库中。接下来我想使用它,所以我创建了一个这样的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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>...</groupId>
    <artifactId>child</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    ...
    <parent>
        <groupId>...</groupId>
        <artifactId>core</artifactId>
        <version>0.0.11</version>
    </parent>
</project>

所有存储库信息都存储在settings. xml中。但是,当jenkins运行时…

mvn -f pom.xml --batch-mode help:effective-pom -Drevision=DERIVED -Doutput=effectivePom.xml -s ./build/java/settings.xml

它不使用自定义repo,而是使用默认repo。我缺少什么?是否需要运行一些前置步骤来配置父级的repo?

设置. xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
    <servers>
        <server>
            <id>CUSTOM</id>
            <username>...</username>
            <password>...</password>
        </server>
        <server>
            <id>CUSTOM-SNAPSHOT</id>
            <username>...</username>
            <password>...</password>
        </server>
    </servers>
    <profiles>
        <profile>
            <id>mine</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <pluginRepositories>
                ...
            </pluginRepositories>
            <repositories>
                <repository>
                    <id>CUSTOM-SNAPSHOT</id>
                    <url>...</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </repository>
                <repository>
                    <id>CUSTOM</id>
                    <url>...</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
                <repository>
                    <id>main</id>
                    <url>...</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <!-- make the profile active all the time -->
        <activeProfile>mine</activeProfile>
    </activeProfiles>
</settings>

我还在jules作业上运行了cat build/java/settings. xml,文件显示如预期。

更新2

我试着用-X参数运行maven,看看事情是从哪里来的,它让我注意到了一些事情…

[DEBUG] Using mirror main (...main url) for custom (... custom url).

所以看起来某个地方有一个镜子设置不正确,我该如何删除它?我已经仔细检查了我的代码,没有看到任何地方有镜子。


共1个答案

匿名用户

问题似乎是安装在Jenkins服务器上的默认镜像(在settings. xml或它使用的任何东西中)。关键是maven上的-X选项,这显示了镜像映射。所以为了解决这个问题,我覆盖了它以删除自定义存储库…

<mirrors>
    <mirror>
        <!--This sends everything else to /jpmc-public -->
        <id>main</id>
        <mirrorOf>*,!CUSTOM</mirrorOf>
        <url>... main url</url>
    </mirror>
</mirrors>

我只将其添加到远程settings. xml中,因为它会在本地破坏事物。然而,这似乎解决了问题。