web-dev-qa-db-ja.com

MavenがリポジトリからSNAPSHOTビルドを取得できない

内部リポジトリー(Artifactory)には、安定したビルドと、内部ライブラリーのSNAPSHOTバージョンの両方が含まれています。

安定したビルドの場合、リポジトリから何かをダウンロードする問題はこれまでにありません。

しかし、-SNAPSHOTを追加すると、Mavenは依存関係が最も明確にリポジトリにあるにもかかわらず、依存関係を見つけることができないと主張します。

依存関係をローカルに(つまり、ローカルリポジトリに)構築して展開すると、すべて正常に動作します。

基本的に、これは機能します:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>ourlibrary</artifactId>
  <version>1.0.0</version>
</dependency>

そしてこれはしません:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>ourlibrary</artifactId>
  <version>1.0.1-SNAPSHOT</version>
</dependency>

どちらのバージョンも同じ方法でビルドされ、(私が知る限り)正しくリポジトリにデプロイされていますが。

エラー:

Missing:
----------

1) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,

  Try downloading the file manually from the project website.

  Then, install it using the command:
      mvn install:install-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you Host your own repository you can deploy the file there:
      mvn deploy:deploy-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency:
        1) com.example:product:war:2.0.0-SNAPSHOT
        2) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,

これは this 質問に似ていますが、そこに到達した解決策は私のケースには適用されません。

この問題への洞察は大歓迎です。

編集

(John Vが示唆したように)-Xを指定して実行すると、次のことがわかりました。

[DEBUG] Skipping disabled repository central
[DEBUG] ourlibrary: using locally installed snapshot
[DEBUG] Skipping disabled repository central
[DEBUG] Using mirror: http://repo.example.com/repo (id: repo.example.com)
[DEBUG] Artifact not found - using stub model: Unable to download the artifact from any repository

  com.example:ourlibrary:pom:1.0.1-SNAPSHOT

from the specified remote repositories:
  repo.example.com (http://repo.example.com/repo)


[DEBUG] Using defaults for missing POM com.example:ourlibrary:pom:1.0.1-SNAPSHOT:compile
[DEBUG]   com.example:ourlibrary:jar:1.0.1-SNAPSHOT:compile (selected for compile)
27
Kris

2つの考えが思い浮かびます:

  1. アーティファクトの内部リポジトリのパス構造が正しくありません。 -Xパラメーターを指定してmavenコマンドを実行することをお勧めします。それはファイルをダウンロードするMavenの試みを表示します。リポジトリがURLである行を取得して、自分で探してみてください。

    パスは次のようになります

    /com/example/ourlibrary/1.0.1/ourlibrary-1.0.1-SNAPSHOT.jar

  2. リポジトリをpom.xmlのリポジトリとして含めなかった
14
John Vint

通常、リリースURLとは別のスナップショットURLがあります。同じリポジトリ内の異なるパスですが、pom内の個別のリポジトリとしてリストされています。スナップショット用にスナップショットを有効にする必要があり、リリース用にスナップショットを無効にする必要があります。

<repositories>
        <repository>
            <id>central</id>
            <url>
                http://<releases-url>
            </url>
            **<snapshots>
                <enabled>false</enabled>
            </snapshots>**
        </repository>

        <repository>
            <id>snapshots</id>
            <url>
                http://<snapshots-url>
            </url>
            <snapshots>
                **<enabled>true</enabled>**
                <!-- never, daily, interval:X (where X is in minutes) or always -->
                <!--<updatePolicy>daily</updatePolicy> -->
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
13
kevinmrohr