Maven Build Fehler: The site descriptor cannot be resolved from the repository


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.

Du hast Fragen oder Anmerkungen? Kontakt: arndt@schoenb.de