我们已经使用默认设置的两个存储库安装了 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(没有相对路径元素)的这个父项目。如果我将我的父项目部署到档案存储库,它就在那里。如果我尝试在另一个项目上运行任何命令,例如 mvn clean,它可以工作,因为在部署期间安装了父项目。但是,如果我从本地存储库中手动删除父项目并尝试运行相同的命令,Maven 会返回错误消息:
不可解析的父 POM:在 mycompany-release (http://XXXX:8080/archiva/repository/internal/) 中找不到工件 com.mycompany:Parent:pom:1-SNAPSHOT,并且“parent.relativePath”指向错误的本地聚甲醛
似乎在发布存储库中查找了父项目,而我希望在快照存储库中查找它。
谢谢你的帮助
编辑:这是子 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),它可以工作。