内部リポジトリー(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)
2つの考えが思い浮かびます:
アーティファクトの内部リポジトリのパス構造が正しくありません。 -Xパラメーターを指定してmavenコマンドを実行することをお勧めします。それはファイルをダウンロードするMavenの試みを表示します。リポジトリがURLである行を取得して、自分で探してみてください。
パスは次のようになります
/com/example/ourlibrary/1.0.1/ourlibrary-1.0.1-SNAPSHOT.jar
通常、リリース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>