我们已经安装了Archiva,默认设置了两个存储库。
以下是我的 settings.xml :
<server>
<id>mycompany-release</id>
<username>admin</username>
<password>******</password>
</server>
<server>
<id>mycompany-snapshots</id>
<username>admin</username>
<password>******</password>
</server>
<mirror>
<id>mycompany-release</id>
<url>http://X.X.X.X:8080/archiva/repository/internal/</url>
<mirrorOf>external:*</mirrorOf>
</mirror>
<mirror>
<id>mycompany-snapshots</id>
<url>http://X.X.X.X:8080/archiva/repository/snapshots/</url>
<mirrorOf>apache.snapshots</mirrorOf>
</mirror>
<profile>
<id>repo</id>
<repositories>
<repository>
<id>mycompany-release</id>
<url>http://X.X.X.X:8080/archiva/repository/internal/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>mycompany-snapshots</id>
<url>http://X.X.X.X:8080/archiva/repository/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<activeProfiles>
<activeProfile>repo</activeProfile>
</activeProfiles>
我有一个父项目,用于设置所有项目的公共配置。此父项目的版本为1-SNAPSHOT。因此,在所有其他项目中,父节指向具有版本1-SNAPSHOT(没有相对路径元素)的此父项目。如果我将我的父项目部署到archiva存储库,它就在那里。如果我尝试在另一个项目上运行任何命令,如mvn clean,它可以工作,因为在部署期间安装了父项目。但是,如果我从本地存储库手动删除父项目并尝试运行相同的命令,Maven会返回错误说:
不可解析的父POM:无法找到工件 com.mycompany:Parent:pom:mycompany-release中的1-SNAPSHOT (http://X.X.X.X:8080 / archiva / repository / internal /)和 'parent.relativePath'指向错误的本地POM
似乎在发布存储库中查找了父项目,而我预计它会在快照存储库中查找。
感谢您的帮助
编辑:以下是儿童POM的一部分:
<parent>
<groupId>com.mycompany</groupId>
<artifactId>Parent</artifactId>
<version>1-SNAPSHOT</version>
</parent>
<groupId>com.mycompany</groupId>
<artifactId>child</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
如果我删除父节并运行mvn help:effective-pom,我得到(只显示存储库):
<repositories>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>mycompany-release</id>
<url>http://X.X.X.X:8080/archiva/repository/internal/</url>
</repository>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>mycompany-snapshots</id>
<url>http://X.X.X.X:8080/archiva/repository/snapshots/</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
注意:如果我将父版本替换为1(而不是1-SNAPSHOT),则可以正常工作。
答案 0 :(得分:1)
我发现了什么问题。 settings.xml 中有问题的行是:
<mirrorOf>external:*</mirrorOf>
实际上,它导致Maven将 mycompany-release 存储库视为 mycompany-snapshots 存储库的镜像。但是,此存储库不会镜像快照。我用以下代码替换了这一行:
<mirrorOf>central</mirrorOf>
现在, mycompany-release 存储库仅镜像Maven中央存储库而不是 mycompany-snapshots 存储库,因此它会在中查找快照工件。 mycompany-snapshots 存储库。
感谢Andrew的帮助!我现在没有可能显示完整的日志。