最近、ArchivaからSonatypeNexusに移行しました。
サードパーティのリポジトリからJarを使用しようとしていますが、Nexusはそれをローカルリポジトリにキャッシュしません。
このセクションで回答を検索しましたが、質問に回答できるものが見つかりませんでした。
これが私がしたことです...
私はsettings.xmlを使用しています:
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://THE_URL:8080/nexus/content/groups/public</url>
</mirror>
</mirrors>
<servers>
<server>
<id>admin</id>
<username>user</username>
<password>password</password>
</server>
</servers>
<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>
</settings>
また、使用しているすべてのサードパーティリポジトリのプロキシリポジトリを作成し、それらをNEXUS PUBLICGROUPに追加しました。
次に、次のコマンドを実行しました。
mvn clean install
次のエラーが発生しました:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building shlang 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://THE_URL:8080/nexus/content/groups/public/com/shadow/shadow/1/shadow-1.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.341s
[INFO] Finished at: Sun Jun 30 11:59:42 IDT 2013
[INFO] Final Memory: 6M/120M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project shlang: Could not resolve dependencies for project com.shadow:shlang:jar:1.0-SNAPSHOT: Failed to collect dependencies for [couchbase:couchbase-client:jar:1.1.5 (compile), com.google.code.gson:gson:pom:2.2.2 (compile), org.json:json:jar:20090211 (compile), net.sf.json-lib:json-lib:jar:jdk15:2.4 (compile), jline:jline:jar:2.10 (compile), commons-validator:commons-validator:jar:1.4.0 (compile), spy:spymemcached:jar:2.8.1 (compile), com.shadow:util:jar:1.0.1 (compile), com.shadow:monkey_schoolyard:jar:1.0.0 (compile)]: Failed to read artifact descriptor for com.shadow:util:jar:1.0.1: Could not find artifact com.shadow:shadow:pom:1 in nexus (http://THE_URL:8080/nexus/content/groups/public) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/DependencyResolutionException
ローカルリポジトリでの結果は、サードパーティのjarファイルが含まれていないことです。
ここで何が恋しいですか?
ほとんどの場合、ローカルのMavenリポジトリには、コンポーネントがキャッシュされていないという事実があります。 -Uフラグを使用して、スナップショットバージョンの更新と、以前に見つからなかったバージョンの存在をMavenにチェックさせることができます。
だから実行
mvn clean install -U
物事が本当に奇妙な場合は、ローカルリポジトリ内のそれぞれのフォルダ構造を完全に削除すると役立つことがあります。だからあなたの例では
rm -rf ~/.m2/repository/com/shadow/
Manfredのソリューションが機能しない場合、問題はNexusがアーティファクトを解決しようとしていることにあります。
ブラウザを使用している場合は、Nexusが実際に行っていることを確認して、目的のアーティファクトを見つけることができます。
アーティファクトのパスを含むNexusリポジトリのURLに?describeを追加します。
例えば。 NexusリポジトリパブリックリポジトリURL: http://my.nexus.server.address:8081/nexus/content/groups/public /
アーティファクトのフェッチ
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
上記のアーティファクトのパスは次のようになります。org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar
したがって、確認する完全なURL
次に、このプロセスは、パブリックリポジトリグループの下に構成されているリポジトリのリストを、リポジトリが指定されている順序で続行し、リポジトリが要求されたアーティファクトを提供できなかった理由を示します。
ほとんどの理由はかなり自明であり、無視することができます。
興味深い理由の1つは、エラーリポジトリに見つからないためにまだキャッシュされているがリポジトリに対して取得された場合です。
これは、ある時点でNexusがアーティファクトを取得しようとして、それを見つけられなかったことを示しています。
このステータスはNexus内にキャッシュされているようです。したがって、キャッシュをクリーンアップする最も簡単な方法は、 Nexus を再起動することです。
リポジトリリンクが機能していないかブロックされている場合は、ミラーを試してください。アーティファクトのほとんどは、他のミラーで利用できます。
ローカルルートディレクトリ(centOSの場合)の「/.m2/settings.xml」にあるnexus-private.hortonworks.comにミラーを追加します。そこには多くのMavenミラーベースがあります
この場合、「 https://repo.hortonworks.com/content/repositories/releases/ "」を使用することをお勧めします。 '/。m2/settings.xml'に以下を追加します
<mirrors>
<mirror>
<id>alternate</id>
<name>alternate to hortonworks</name>
<mirrorOf>*,!central</mirrorOf>
<url>https://repo.hortonworks.com/content/repositories/releases/</url>
</mirror>
</mirrors>
これにより、中央を除くすべてのリポジトリにミラーが追加されます。そのため、セントラルは影響を受けず、hortonworksがミラーリングされます。
また、[〜#〜] proxy [〜#〜]で作業している場合は、mvnコマンドに追加することを忘れないでください;これを使って
mvn clean install -DproxySet=true -DproxyHost=<your proxy Host> -DproxyPort=<port>
Ambariのインストール中にこれを使用しました。これが解決することを願っています:)。
他のすべてが失敗した場合は、pomタグとXMLタグに非表示の文字が含まれていないことを確認してください(特殊文字を削除し、mvnrepository.comなどの標準ソースからコピーし、手動で再入力します)。
トリッキーな目に見えないキャラクターがネクサスルックアップを破壊し(Mavenビルドからのみ)、他のすべてが正常に機能したため、デバッグに恥ずかしい時間を費やしました。
これが私の例です( http://www.nousphere.net/cleanspecial.php によって明らかにされました):
<dependency>
<groupId>uk.co.jemos.podam</groupId>
<artifactId>podam</artifactId>
<version>‎7.2.1.RELEASE</version>
<scope>test</scope>
</dependency>
バージョンの前に隠れているそのがらくたを見ますか?