そのため、別のプロジェクトのスナップショットバージョンに依存するプロジェクトがあります。依存関係は次のとおりです。
<dependency>
<groupId>org.oop</groupId>
<artifactId>oop</artifactId>
<version>0.9.9-SNAPSHOT</version>
</dependency>
Oopプロジェクトでは、「mvn clean deploy」を実行したので、スナップショットバージョンはMavenセントラルリポジトリのどこかにあるはずです。しかし、mvnクリーンインストールを実行すると、上記のスナップショットの依存関係を解決できず、次のようになります。
欠落:
1)org.oop:oop:jar:0.9.9-SNAPSHOT
プロジェクトのWebサイトからファイルを手動でダウンロードしてみてください。
次に、次のコマンドを使用してインストールします:mvn install:install-file -DgroupId = org.oop -DartifactId = oop -Dversion = 0.9.9-SNAPSHOT -Dpackaging = jar -Dfile =/path/to/file
または、独自のリポジトリをホストしている場合は、そこにファイルをデプロイできます。mvn deploy:deploy-file -DgroupId = org.oop -DartifactId = oop -Dversion = 0.9.9-SNAPSHOT -Dpackaging = jar -Dfile =/path/to/file -Durl = [url] -DrepositoryId = [id]
mavenにスナップショットを自動的にダウンロードさせる方法はありますか?ここに何か不足している必要があります。
EDIT1:私のsettings.xmlで:
<server>
<id>sonatype-nexus-snapshots</id>
<username>XXXXXX</username>
<password>XXXXXX</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>XXXXXX</username>
<password>XXXXXX</password>
</server>
EDIT2:
これを〜/ .m2/settings.xmlに追加するだけです:
<profiles>
<profile>
<id>allow-snapshots</id>
<activation><activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
</profile>
</profiles>
Mavenはスナップショットを自動的にダウンロードしようとしますが、実際には(エラーが示すように)スナップショットをダウンロードします。デフォルトでは、Mavenは新しいスナップショットバージョンを1日に1回検索しますが、その間隔はスナップショットリポジトリ構成(たとえば、settings.xml)で変更できます。
<updatePolicy>interval:5</updatePolicy>
これにより、Mavenは5分ごとにチェックされます(頻繁にビルドする場合)。または、-U
または--update-snapshots
オプション。手動でチェックを強制します。
ただし、依存関係を見つけることができません。スナップショット依存関係のリポジトリ設定とアーティファクト構成を投稿できますか?
それは org.oop:oop:jar:0.9.9-SNAPSHOT
リポジトリ内のアーティファクト?
...スナップショットのバージョンは、Mavenの中央リポジトリのどこかにあるはずです。
いいえ、そうではありません。調べてみたが見つからなかった。 Afaik、ステージングメカニズムがあるため、設定が間違っている可能性があります。しかし、通常、他の人がすでに言ったように、ArtifactoryやNexusなどの独自のリポジトリマネージャーを使用します。
スナップショットを更新するには、-Uオプションを試してください
-U,--update-snapshots Forces a check for updated
releases and snapshots on remote
repositories
しかし、あなたは言った:
私は「mvn clean deploy」を実行したので、スナップショットバージョンはMavenセントラルリポジトリのどこかにあるはずです。
これは不可能です。スナップショットは別の場所に移動しています。もし私がmvn clean deploy
個人用リポジトリを設定せずに、以下を取得します。
デプロイメントが失敗しました:repositoryManagementエレメント内のPOMまたは-DaltDeploymentRepository = id :: layout :: urlパラメーターでリポジトリエレメントが指定されていませんでした
デプロイを有効にするには、たとえば、pom.xmlに追加するいくつかの設定があります。
<distributionManagement>
<!-- Publish versioned releases here -->
<repository>
<id>myrepo</id>
<name>My releases</name>
<url>http://nexus.mycompany.com/nexus/content/repositories/releases</url>
</repository>
<!-- Publish snapshots here -->
<snapshotRepository>
<id>myrepo</id>
<name>my snapshots</name>
<url>http://nexus.mycompany.com/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>myrepo</id>
<name>My Public Repository</name>
<url>http://nexus.mycompany.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
その依存関係はリポジトリに存在しますか? (pom.xmlまたはsettings.xml内)?
ないように見えます。ちなみに、あなたの設定を見てください、あなたは-o
(オフライン)。また、-U
スナップショットを更新します。
誤解がないことを確認するために、用語を少し明確にしましょう。
"Maven Central"( http://search.maven.org/ )は、リリースのみを検索するグローバルサイトです。 Centralはスナップショットを受け入れないため、そこにデプロイするとエラーが発生します。
おそらく、ローカル/会社全体のMavenプロキシ/キャッシュを意味します。これらは、スナップショットバージョンを拒否するように構成することもできます。 Nexusの場合は、より複雑なルールを定義することもできます。私の場合、mvn deploy
中にエラーが発生しない問題がありましたが、サーバーのログにエラーが表示されました。
データの追跡を試みます。デバッグを有効にして(mvn -X
)、Mavenがデータをアップロードした場所を確認します。次に、サーバーをチェックして、成果物が実際にアップロードされたかどうかを確認します。サーバーのログでエラーを確認してください。
また、スナップショットの依存関係は1日に1回のみ更新されることに注意してください。だからこれは動作しません:
PC#1:mvn install
->依存関係が欠落しているエラーPC#2:mvn deploy
PC#1:mvn install
->「1日に1回更新する」ポリシーのため、依存関係がまだありません
mvn install -U
を試して、Mavenにキャッシュされたメタデータを強制的に更新させます。
コマンドラインで-Uを設定しても、スナップショットが更新されない問題に遭遇しました。私にとっての問題は、クライアントがMaven 3でサーバーがMaven 2であり、Maven 3では一意のスナップショットがサポートされなくなったことです。 3.xxクライアントをサポートするには、タイムスタンプ付きのスナップショットを含む新しいリポジトリを作成する必要がありました。
あなたはどちらか