2009-02-27 15 views
7

Ich habe einige Projekte, die bereits Site-Generierung über Maven durchführen, und ich möchte Cobertura-Berichte darin integrieren, aber kein Maven-Ziel, das ich zu betreiben scheint, wird eine lokale Vorschau erzeugen Zu mir gehören auch die Cobertura-Berichte auf der Website. Ich möchte sicher sein, dass sie korrekt generieren, bevor ich die Pom-Änderungen an den Repo-Code festlege und die Website beschädigt habe.Erstellen einer Maven-Site mit einem Cobertura-Bericht

Im Folgenden finden Sie, was ich den Maven Poms (Eltern und Modul) hinzugefügt haben, aber die Seite, die ich sehe, wenn ich laufen mvn site:run enthält nicht die cobertura Berichte:

<project> 
... 
    <build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <configuration> 
       <check> 
        <haltOnFailure>false</haltOnFailure> 
        <regexes> 
         <regex> 
          <pattern>parent-package-name-here.*</pattern> 
          <branchRate>80</branchRate> 
          <lineRate>80</lineRate> 
         </regex> 
        </regexes> 
       </check> 
       <instrumentation> 
        <includes> 
         <include>parent-package-name-here/**/*.class</include> 
        </includes> 
       </instrumentation> 
      </configuration> 
      <executions> 
       <execution> 
        <id>clean</id> 
        <phase>pre-site</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>instrument</id> 
        <phase>site</phase> 
        <goals> 
         <goal>instrument</goal> 
         <goal>cobertura</goal> 
         <goal>check</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
... 
<reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
</reporting> 
... 
</project> 

Was Maven Befehl sollte ich um die Seite mit Cobertura-Berichten zu generieren? Oder: Was soll ich (zusätzlich) hinzufügen, damit die Site-Generation die Cobertura-Berichte einbeziehen kann?

Antwort

3

Ich habe herausgefunden, wie das geht.

Es scheint, es gibt eine Menge Fehler in der Link-Generierung innerhalb der Maven Site Generation Plugin.

Der einzige Weg, die ich gefunden habe, eine lokale Kopie der Website mit dem Arbeitsmodul Link machen Maven erzeugen, ist den distributionManagement/site Tag zu ändern, um ein lokales Verzeichnis anstelle des Real Live-deploy Verzeichnisses zu zeigen, dann maven site:deploy verwenden.

Jeder Versuch, mvn site:stage zu verwenden, erzeugt defekte Verbindungen. Gleiches gilt für mvn site:run.

Die Bericht-Links arbeiten mit mvn site:run/mvn site:stage aber die Links zu Modulen nicht.

+2

Sie sollten dies als Fehler in Maven's Bug Tracker ablegen, sonst wird nicht daran gearbeitet. –

0

Wir verwenden

mvn site-deploy 

Dadurch wird die Website erstellt und setzt es (kopiert sie an den Ort, wir konfiguriert haben).

+0

Aber ich möchte es nicht zu seiner "Produktion" Speicherort bereitstellen, ich möchte eine lokale Vorschau zuerst, da dies noch experimentell ist. –

1
mvn site 

sollte tun, was Sie suchen. Sie konfigurieren das Plug-in so, dass es in der Pre-Site- und Site-Phase des Lebenszyklus ausgeführt wird, aber Sie führen dann die Site aus: run goal not site. Wir machen ähnliche Dinge mit Klee (kommerzielles Coverage Tool) und mvn site macht den Trick.

3

tun soll:

mvn site 

Um dies näher auszuführen, läuft mvn a: b läuft das Ziel b in einem Plugin. Das Sagen mvn c bedeutet, die Lebenszyklusphase c auszuführen, die alle gebundenen Ziele in allen Phasen bis zu c ausführt. Dies führt dazu, dass viel mehr Dinge passieren werden (z. B. die notwendigen Vorbereitungen für die Erstellung von Cobertura-Berichten).

0

mvn site:site sollte produzieren, was Sie suchen, im Zielverzeichnis wird es ein Site-Verzeichnis geben, das alle Berichte enthält, die mit einem index.html in diesem Verzeichnis verbunden sind.

1

Site: Stage Modul Links funktionieren nicht in meiner Erfahrung entweder für Multi-Modul-Builds, aber Site: deploy tut. Versuchen Sie Folgendes:

Verwenden Sie eine Eigenschaft für die Website-URL im übergeordneten Pom, z. ${site.url}.Dann rufen diese

mvn clean site site:deploy -Dsite.url=file://`pwd`/target/site-deployed 

Der pwd ist ein -nix Befehl, der das aktuelle Verzeichnis ersetzen wird. Dies liegt daran, dass die von Ihnen verwendete URL absolut sein muss.