Wir sind bei uns kürzlich von Nexus 2 auf Nexus 3 gewechselt. Nach dem Import der Artefakte starteten wir einen Build und erhielten bei alle Projekten den Fehler
The site descriptor cannot be resolved from the repository:
ArtifactResolutionException: Unable to locate site descriptor: Could not transfer artifact XX.XXX.poms:XXXXX:xml:site_en:1.1.2 from/to snapshots
Wir haben nicht mehr im Detail nachgeforscht warum der Unterschied zwischen Nexus Version 2 und 3 bei uns aufgetreten ist (möglich Gründe können bei Nexus liegen oder beim sauberem Reimport der Artefakte). Ursache für den Fehler ist jedoch das maven-site-plugin. Dieses erwartet, wenn nichts anderes konfiguriert ist, das für übergeordnete Artefakte im Repository downloads für Sites bereitstehen (site_en). Bei uns sind Parent-Poms an dieser Stelle aber nur strukturierende POMs die einheitliche Einstellungen konfigurieren. Es sind also keine Projekte und eine Datei
site.xml
besitzen sie aus diesem Grund auch nicht.
Lösung
Die Lösung ist es die „Ableitung“ der Seiten zu unterbinden. Hierfür muss in der site.xml das Attribut combine.self auf override gesetzt werden (dies Attribut steht nicht seit Anfang der xml Definition zur Verfügung, also ggf auf die aktuelle Version – hier 1.6.0 – wechseln)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/DECORATION/1.6.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/DECORATION/1.6.0 http://maven.apache.org/xsd/decoration-1.6.0.xsd"
combine.self="override"
name="schöso baseClassesJunit">
</pre>
Des Weiteren muss sichergestellt werden, dass das pom für das maven-site-plugin auf dieses Verzeichnis auch verweist. Fehlt das Verzeichnis wird die gleiche Fehlermeldung erzeugt.