0

Apache Commons VFS2siteのビルドを実行すると、依存関係レポート プラグインは、どのアーティファクトをどのリポジトリで取得できるかをマトリックスに入力しようとします。

私の場合、AFAIKが放棄したmaven.glassfish.orgリポジトリも検査しようとします。しかし、それはまだ使用されている依存POMの一部にあるため、私のプロジェクトにはまだ表示されています(そして、簡単に影響を与えることはできないと思います)。

[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.7
[ERROR] Unable to determine if resource asm:asm:jar:3.1:provided exists in http://maven.glassfish.org/content/groups/glassfish
...

これは多くのエラーを生成するだけでなく、時間がかかります。また、レポートの列を、このプロジェクトに関連するリポジトリに限定したいと思います。

プラグイン (およびすべての Maven) が特定のリポジトリをスキップするようにする方法はありますか? 私のプロジェクト POMでそれらをどのようにブラックリストに載せますか?

ゴールにはこのdependency:list-repositoriesレポは表示されませんが、キャッシュされたすべての POM ファイルを検索すると<id>glassfish-repository</id>com.sun.jersey:jersey-server:1.8.

4

1 に答える 1

1

次のいずれかを選択します。

  1. 正解は、pom 定義からリポジトリを削除することです。POM にリポジトリを配置することが悪い考えである理由を参照してください。他のオープンソース プロジェクトがそこでホストされていない理由はないはずです。他のリポジトリにプロジェクトを Central に公開するよう説得するには、ドキュメントhttp://maven.apache.org/guides/mini/guide-central-repository-upload.htmlを指定するか、アップロードを実行してください。最も簡単なアーティファクトがいくつかある場合。

Maven はアーティファクトについてリポジトリをチェックする必要があるため、pom で定義された追加のリポジトリはすべてビルドのパフォーマンスに影響することに注意してください。リポジトリを 1 つ追加するだけなら大きな問題ではありません...しかし、問題は大きくなり、Maven ビルドがアーティファクトごとに 50 のリポジトリをチェックし、ビルド時間が犬になることがわかります。影響の詳細については、このメール スレッドを参照してください。

  1. そのプロジェクトが放棄された場合の次善の策は、pom にパッチを適用してリポジトリ定義を削除し、パッチを適用した pom と変更されていない jar を Maven Central に再アップロードすることです。アーティファクトを中央リポジトリにアップロードするためのガイドを参照してください

これらのオプションを避ける

ここでの他のすべてのオプションはハックであり、これらのオプションのいずれかを選択すると、問題を解決するために他のすべての人が同じ変更を加える必要があることを意味します.

  1. settings.xmlファイルでリポジトリを無効にして、リポジトリをブラックリストに登録します。残念ながら、リポジトリの一意の識別子はありません。リポジトリ > idフィールドは、pom の作成者が定義するものであれば何でもかまいません。したがって、同じリポジトリ URL を異なる ID で参照できます。-Xオプションを指定して ID を実行すると、デバッグ出力にリポジトリ ID が表示されます。無効にするには、次のようなものを使用します。
<repository>
  <releases>
    <enabled>false</enabled>
  </releases>
  <id>the repo id from X here</id>
  <name>the repo's name</name>
  <url>the repo's url</url>
</repository>
  1. 代わりにミラーを使用するようにリポジトリに強制します。3 によく似ていますが、壊れたリポジトリを別のリポジトリにリダイレクトします。
<mirror>
  <id>Another Mirror</id>
  <url>url to mirror</url>
  <mirrorOf>id of broken repo</mirrorOf>
</mirror>
  1. 代わりにローカルのMaven リポジトリ マネージャーを使用するようにリポジトリに強制します(ラップトップ上であっても)。これは、誰が pom でリポジトリを悪用しても、Maven はローカル MRM にのみ接続し、定義されたリポジトリごとに複数の遅いネットワーク接続を回避します。
<mirror>
  <id>Local MRM</id>
  <url>url to MRM</url>
  <!-- Mirror EVERYTHING to your MRM -->
  <mirrorOf>*</mirrorOf>
</mirror>
于 2014-12-20T01:02:39.040 に答える