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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top