2

ローカル マシンにインストールされている独自のバージョンの Nexus Web アプリ リポジトリを使用しています。スナップショットを保存するリポジトリを 1 つだけ使用して Nexus を構成しました。

http://localhost:8081/nexus/content/repositories/MySnapshots/

Nexus のインストール後、デフォルトのリポジトリをすべて削除し、独自のリポジトリだけを追加したことに注意してください。(もしかして、これがまずかった?)

mvn クリーン インストールを実行すると、サード パーティのアーティファクトの一部がリモート リポジトリから直接ダウンロードされていることに気付きました。たとえば、ビルドからの出力行の 1 つを次に示します。

Downloading: http://repo.maven.apache.org/maven2/com/sun/org/apache/xml/internal/resolver/...

奇妙なことに、他のアーティファクトがローカルのネクサスを通過して、最終的にアーティファクトに到達していることがわかります。

Downloading: http://localhost:8081/nexus/content/repositories/MySnapshots/org/apache/maven/wagon/wagon-provider-api...

ダウンロード URL の最初の部分は私のローカル リポジトリですが、MySnapshotsの後の部分はすべて apache.org からのものであることに注意してください。

私のNexusリポジトリは、一部のアーティファクトのダウンロードではmaven.apache.orgへのプロキシのように機能していますが、他のものではソースに直接アクセスしているようです。

なぜこれが起こっているのか誰にも教えてもらえますか?

すべてのビルドが常に成功していれば、それほど気にすることはありませんが、大規模なプロジェクトをコンパイルしているときに、アーティファクトが見つからないためにビルドが失敗することがあります。

たとえば、Eclipse jdt に依存する別のプロジェクトをビルドしようとすると、次のエラーが発生します。

Downloading: http://localhost:8081/nexus/content/repositories/MySnapshots/eclipse/jdt/core/eclipse.jdt.core
Could not find artifact eclipse.jdt.core:eclipse.jdt.core

これが私の Nexus が適切に構成されていないことを意味するのか、それともアーティファクト eclipse.jdt.com が実際に存在しないことを意味するのかはわかりません。ダウンロードがローカルの Nexus リポジトリを経由していない場合は、pom/settings.xml ファイルを調査します。代わりに、これは私の Nexus 構成が原因であるかどうか疑問に思います。

これが表示されたときに、Maven の settings.xml とビルド中のプロジェクトの pom ファイルを確認したい場合は、ここで表示できます。

settings.xml: http://pastebin.com/NvLr5bEA

pom.xml: http://pastebin.com/PJ0P3RaK

4

2 に答える 2

2

通常どおりローカル ネクサスをプロキシとして使用する場合は、settings.xml を次のように構成する必要があります。

 <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </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>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>

注意が必要なのは、構成された nexus インスタンスへのすべての呼び出しを再ルーティングするミラー機能です。日食の部分のようにあなたが言及したことは問題になる可能性があります.maven centralを介して利用できるアーティファクトはごくわずかです。さらに、maven セントラル、リリース リポジトリ、スナップショット リポジトリなどのデフォルトはそのままにしておく必要があります。これらは必要なリポジトリであるためです。

于 2013-08-19T16:51:07.507 に答える
0

プロキシの問題ではないと思います。Maven Central Repo からダウンロードする最初のケースについての私の理解では、同じアーティファクトが nexus リポジトリで利用できない可能性があります。そのため、Maven Central Repo に移動します。 .

2 番目のケースでは、nexus で利用できるため、reactor は Maven Central Repo からダウンロードしようとしませんでした。

于 2013-08-16T19:08:03.310 に答える