0

デフォルトで設定された 2 つのリポジトリで 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

親プロジェクトは、スナップショット リポジトリで検索されると予想していましたが、リリース リポジトリで検索されているようです。

ご協力いただきありがとうございます

編集:これは子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-SNAPSHOT ではなく) 1 に置き換えると、機能します。

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 に答える