6

Maven3プロジェクトのJenkinsビルドジョブがあります。プロジェクトにはSNAPSHOT依存関係があります。イントラネットのSonatypeNexusリポジトリにデプロイされているSNAPSHOTアーティファクトがMavenで見つからないため、ビルドが失敗しました。SNAPSHOTリポジトリは、のミラーURLである「public」グループの一部です<mirrorOf>*</mirrorOf>
Jenkinsは、ワークスペースに対してローカルのローカルMavenリポジトリーを作成するように構成されています(ジョブごとに1つのリポジトリー)。
他のすべてのスナップショット以外の依存関係は解決され、適切にダウンロードされます。SNAPSHOT依存関係のないプロジェクトの他のジョブも正常に構築されます。私がこれまでに試したこと(成功しなかった):

  • Nexusの期限切れのキャッシュ
  • (ジョブディレクトリ内の)ローカルリポジトリを確認しました-アーティファクトディレクトリはありませんでした
  • ジョブ構成で「ビルド->目標とオプション」を「-Uクリーンインストール」に設定します
  • 1時間待つ

私のセットアップ:
Windows Server 2003
Java 1.6.0_31
Jenkins 1.480
Maven 3.0.3

4

2 に答える 2

3

これは、Nexusからスナップショットリビジョンをダウンロードして、私も発見した「落とし穴」である可能性があります。

解決策はNexusの本で提供されていますが、完全には説明されていません。

<settings>
  <mirrors>
    <mirror>
      <id>nexus</id>
      <url>http://myserver/nexus/content/groups/public</url>
      <mirrorOf>central</mirrorOf>
    </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>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

Nexusが提供するリポジトリグループにもスナップショットリビジョンを含めることができることをMavenに明示的に伝える必要があるようです。おそらく、これが行うことは、Mavenがトリガーされて、どのタイムスタンプ付きファイルが実際に最新のスナップショットであるかを検出するために使用される特別なメタデータファイルの検索を開始することです。

于 2012-09-06T18:36:54.490 に答える
1

すでに定義mirrorOf/*しているので、これをに追加して.m2/settings.xml、スナップショットについてもそのミラーを検索するようにmavenに指示します。

<profile><id>alwaysactive</id>
    <activation><activeByDefault>true</activeByDefault></activation>
    <repositories>
        <repository><id>unused</id><url>unused</url></repository>
    </repositories>
</profile>
于 2015-05-20T08:34:33.877 に答える