4

チームでは Maven/Nexus/Hudson を使用しています。Hudson サーバーの Maven バージョンは 3.0.4 で、ジョブのビルド時にスナップショットの依存関係をダウンロードできなくなりました。何が変わったのかはわかりません (チームは何もしていない、と彼らは言います) が、月曜日の朝に機能したビルドが月曜日の午後に機能しなくなったため、何かが起こりました。

スナップショットに依存する Hudson でプロジェクトをビルドしようとすると、次のエラーが発生します。

[WARNING] The POM for com.company:my-client:jar:1.9-SNAPSHOT is missing, no dependency information available

Mavenがmaven-metadata.xmlファイルをダウンロードしていないため、タイムスタンプバージョンへの依存関係を解決できないという事実に問題を突き止めたと思います。たとえば、ローカル ビルド (Maven 3.0.3 を使用) では、Maven 出力に次のように表示されます。

Downloading: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/maven-metadata.xml
Downloaded: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/maven-metadata.xml (1004 B at 20.0 KB/sec)
Downloading: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.pom
Downloaded: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.pom (3 KB at 57.5 KB/sec)
...
Downloading: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.jar
...
Downloaded: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.jar (10 KB at 153.9 KB/sec)

どちらのビルドも Nexus リポジトリにアクセスしており、Hudson Maven はそこからスナップショット以外の依存関係に問題なくアクセスできるため、接続の問題ではありません。

Maven が SNAPSHOT を認識せず、ダウンロードしmaven-metadata.xmlて依存関係の最新のタイムスタンプ バージョンを取得しないのはなぜですか?

4

2 に答える 2

2

私もこの問題にぶつかりました。ソース リポジトリをプロジェクト POM に追加することで、この問題をうっかり解決してしまいました。引き続きミラーを介してルーティングされますが、この変更により、プロジェクトはメタデータを最新のスナップショット バージョンに解決することができました。

例:

<project>
    <repositories>
        <repository>
            <id>XYZ-SNAPSHOTS</id>
            <url>http://nexus.xyz.org/nexus/content/groups/enterprise-snapshots/</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>
</project>

事後、ミラーを正しく構成していないことがわかりました。本当の問題は、スナップショットが Nexus 自体で有効になっているにもかかわらず、settings.xml のミラーで有効になっていないことです。

プロジェクトにリポジトリを追加したときに、何も考えずにスナップショットを有効にすると、Maven がスナップショットを解決できるようになりました。これで修正されましたが、より良い解決策は、settings.xml を更新してすべてのミラーリングされたリポジトリで修正することです。

参考までに、適切な settings.xml 構成を次に示します ( Sonatypeから取得)。

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>
于 2019-01-15T18:51:55.107 に答える