我有以下家长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).
所以看起来某个地方有一个镜子设置不正确,我该如何删除它?我已经仔细检查了我的代码,没有看到任何地方有镜子。
问题似乎是安装在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中,因为它会在本地破坏事物。然而,这似乎解决了问题。