0

我们已经使用默认设置的两个存储库安装了 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),它可以工作。

4

1 回答 1

1

我发现了问题所在。settings.xml中有问题的行是:

<mirrorOf>external:*</mirrorOf>

实际上,它导致 Maven 将mycompany-release存储库视为mycompany-snapshots存储库的镜像。但是,此存储库不镜像快照。我将这一行替换为:

<mirrorOf>central</mirrorOf>

现在,mycompany-release存储库仅镜像 Maven 中央存储库而不是mycompany-snapshots存储库,因此它在mycompany -snapshots存储库中查找快照工件。

感谢安德鲁的帮助!我现在没有可能显示完整的日志。

于 2012-02-27T18:21:56.440 回答