Come cambiare l'output predefinito da un gol strumento Maven 2 / Cobertura?
-
19-09-2019 - |
Domanda
quando ho strumento mie classi che utilizzano Maven 2 utilizzando il comando
mvn cobertura: strumento
L'uscita (classi strumentato) vengono introdotti in \ porta \ generati classi. C'è un modo per cambiare la posizione di uscita a \ obiettivo \ classes?
Ho controllato i compiti strumentazione del plugin cobertura-Maven, ma questo non mi dà una soluzione sofar.
Soluzione
Per quanto ho capito, le classi di strumentazione sono necessari solo per Cobertura per la generazione di report. Se li si crea in target/classes
, si sovrascrivere i file di classe originale.
Se avete bisogno dei file di strumentazione in un barattolo di conseguenza, è possibile configurare il maven-jar-plugin
a raccogliere i file dalla directory target/generated-classes
al posto o in aggiunta ai file dal ${build.project.outputDirectory}
standard.
Modifica
Date un'occhiata alla descrizione Maven-jar-plugin . Per utilizzare solo target/generated-classes
, la seguente aggiunta al vostro POM dovrebbe funzionare - provare e modificarlo per le vostre esigenze:
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3</version> <!-- replace with correct version nbr! -->
<configuration>
<includes>
<include>${project.build.directory}/generated-classes/**/*.class</include>
</includes>
<excludes>
<exclude>${project.build.directory}/classes/**/*.class</include>
</excludes>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
punti ${project.build.directory}
alla vostra cartella di destinazione, ${project.build.ouputDirectory}
di indirizzare / classi. Non so se si può semplicemente impostare ${project.build.ouputDirectory}
ad un nuovo valore - hanno uno sguardo al questo capitolo del libro Maven , forse troverete alcuni suggerimenti
Modifica 2
Alternativly o in aggiunta è possibile utilizzare Maven per copiare i file da Target / generato-classi di indirizzare / classi dopo coberture:instrument
è terminato. Questa domanda ha una risposta con un esempio POM (frammento), è sufficiente per identificare la fase corretta (processo-risorse è decisamente troppo presto per il vostro caso)
Altri suggerimenti
Non hai detto perché si desidera sovrascrivere il percorso predefinito, ma suppongo che è così che è possibile utilizzare le classi strumentati da un altro progetto, o forse includerli in un archivio web o qualcosa di simile.
Ho aggiunto il seguente al mio pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>instrumented-classes</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>instrumented</classifier>
<classesDirectory>${project.build.directory}/generated-classes/cobertura</classesDirectory>
</configuration>
</execution>
</executions>
</plugin>
Questo rende esperto di generare un file jar aggiuntivo denominato projectname-instrumented.jar
È quindi possibile dipendere da questo file jar da qualsiasi altro pom (tra cui ad esempio un modulo web) utilizzando
<depends>
<group>mygroup</group>
<project>projectname</project>
<version>1</version>
<classifier>instrumented</classifier>
</depends>
non ho la prova questo al 100%, ma ho usato meccanismi simili in passato
Hai provato "mvn cobertura: strumento install"? Si genererà un file jar comprese tutte le classi di versione cobertura. Se si desidera cambiare di nuovo versione originale, basta eseguire il comando senza "cobertura: strumento"
Ho appena implementato la soluzione proposta da Andreas_D, modificato il mio pom e utilizza il Maven-risorse-plugin. Così in un certo punto della mia corporatura Cobertura generato i file vengono copiati nella directory / target / classi.
È possibile configurare usando <classesDirectory>[Your DIR]</classesDirectory>
In cobertura-maven-plugin versione 2.4 questo non è ancora supportato. Ho appena creato un biglietto , patch è collegato al biglietto.