0

プロジェクトのビルドにMaven3.0(nexusセットアップを使用)を使用していますが、ビルドに失敗します:

Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact directory:apacheds-core:jar:${apacheds_version} in central (http://localhost:8081/nexus/content/repositories/central)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:945)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:940)

私の基本的な混乱は次のとおりです。mavenがpom.xmlに依存関係を見つけた場合、リモートリポジトリでアーティファクトを探すにはどうすればよいですか?

私の現在の理解は:

  1. 最初にローカルリポジトリ(.m2 / repository)を調べます。

  2. そこに見つからない場合は、settings.xmlでリポジトリタグ の下に指定されているリポジトリを検索しようとします。質問:言及されているすべてのリポジトリを試しますか?または最初のものだけ?以下に5つのリポジトリについて説明しました。Mavenはこれらすべてを1つずつ検索しますか、それとも最初のリポジトリだけを検索しますか?

<repositories> <repository> <id>central</id> <url>http://localhost:8081/nexus/content/repositories/central</url> </repository> <repository> <id>remote</id> <url>http://localhost:8081/nexus/content/repositories/remote-proxy-nexus-central</url> </repository> <repository> <id>thirdParty</id> <url>http://localhost:8081/nexus/content/repositories/thirdparty</url> </repository> <repository> <id>codehaus</id> <url>http://localhost:8081/nexus/content/repositories/codehaus-snapshots</url> </repository> <repository> <id>public</id> <url>http://localhost:8081/nexus/content/groups/public</url> </repository> </repositories>

私の最後の混乱は、settings.xmlのプロキシセクションについてです。これらの場所は何ですか:

 <proxy>
  <id>remote-proxy-nexus-central</id>
  <active>true</active>
  <protocol>http</protocol>
  <host>repo1.maven.org/maven2</host>
  <port>8080</port>

</proxy>
4

2 に答える 2

1

私たちはローカルの Nexus を使用しており、すべてのユーザーが settings.xml に次の情報を持っていると言えます。

<mirror>
    <id>our-mirror</id>
    <name>Org Public Mirror</name>
    <url>http://host/nexus/content/groups/public</url>
    <mirrorOf>*</mirrorOf>
</mirror>

これにより、maven によるすべての呼び出しが Nexus に送られ、依存関係が取得されます。あなたは最初にローカル.m2を探しているmavenについて正しいです。

Nexus は多くのリポジトリをプロキシし、それらすべての結合を持っています (それを呼び出す Maven プロセス用)。これは、開発者のローカル Maven が 1 つのリポジトリ (Nexus) しか認識していないことを意味します。Nexus は、プロキシ化された/ホストされたリポジトリの 1 つにある、必要なすべての依存関係 ID を提供します。

プロキシに関しては、組織のプロキシがありますが、Nexus は組織内にあるため (外界へのアクセスを許可するようにプロキシが構成されています)、maven はこの特定の構成を必要としません。

これにより、開始するための情報が得られることを願っています。

http://www.sonatype.org/で Nexus/Maven 関連の構成を調べることを強くお勧めします。

于 2013-01-06T15:49:03.747 に答える
0

NexusでMavenを使用するための正しいセットアップは、Nexusでのリポジトリ管理の本に記載されています。サンプルのsettings.xmlはこちらです。説明を読み、スナップショットを有効にするには、中央リポジトリのオーバーライドを追加する必要があることに注意してください。

これを行ったら、settings.xmlでプロキシを構成しません。これは、プロキシなしでローカルネットワークで使用できるためです(通常)。代わりに、Nexusでプロキシ設定を構成して、プロキシしているCentralなどのリポジトリにアクセスできるようにします。グローバルプロキシ構成はここに記載されており、必要に応じて、プロキシリポジトリごとに詳細を構成することもできます。たとえば、プライベートであるためにプロキシするリポジトリのユーザー名/パスワードが必要な場合などです。

于 2013-01-06T18:20:50.783 に答える