Question

Je veux lancer le plugin compilateur Maven dans une phase différente et avec sourceDirectories et destinationDirectories tels que le code de répertoires autres que src / main / java et src / test / java peuvent être utilisés.

Je pensais que la solution ressemblerait à quelque chose comme ci-dessous, où la phase je liant à été pré-intégration-test. Cependant, les propriétés et testOutputDirectory ne répertoire testSourceDirectory semblent pas être spécifié de cette manière car ils sont dans la section du POM.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>

  <executions>
    <execution>
      <id>compile mytests</id>
      <goals>
        <goal>testCompile</goal>
      </goals>
      <phase>pre-integration-test</phase>
      <configuration>
        <testSourceDirectory>${basedir}/src/inttest/java</testSourceDirectory>
        <testOutputDirectory>${basedir}/target/inttest-classes</testOutputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

Y at-il un moyen d'obtenir ce plug-in pour compiler des répertoires différents dans les différentes phases sans affecter son fonctionnement par défaut?

Était-ce utile?

La solution

Les répertoires source sont définies en dehors du compilateur-plugin dans l'élément , donc cela ne fonctionnera pas.

Vous pouvez utiliser le S-maven-plugin-build aide add-source et add- source de test pour spécifier les répertoires sources supplémentaires pour vos tests d'intégration, mais cela pas supprimer les dirs sources existantes.

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <id>add-it-source</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>add-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>${basedir}/src/inttest/java</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>

Si vous liez le add-source de test objectif de courir juste avant le testCompile but, vos tests d'intégration seront inclus. Notez que vous voulez à sortir de cibler / test-classes donc le plugin Surefire va les trouver.

Pour gérer l'élimination des sources de test standard, je l'ai écrit un petit plugin pour modifier le modèle pour supprimer des emplacements de TestSource avant d'ajouter ceux pour les tests d'intégration.

Autres conseils

Après plus de recherche, il est évident que c'est pas réellement possible dans Maven 2 de la manière que je veux, un hack d'une forme est nécessaire d'introduire des tests d'intégration. Alors que vous pouvez ajouter des répertoires supplémentaires (comme suggéré par Rich Vendeur) il n'y a aucun plugin pour enlever les autres sources ou de compiler un répertoire séparément de la compilation principale.

La meilleure solution que j'ai trouvé pour ajouter des tests d'intégration est d'abord utiliser le plugin d'aide de construction pour ajouter le répertoire inttest répertoire pour être compilé des tests.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>add-test-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/inttest/java</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

Maintenant, afin d'obtenir les tests d'intégration pour exécuter la phase-test d'intégration, vous devez utiliser exclut et COMPREND pour manipuler quand ils sont exécutés comme ci-dessous. Cela permet tous les paramètres personnalisés que vous voudrez peut-être (dans mon cas un agent ajouté par argline).

<plugin>
<groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
    <excludes>
        <exclude>**/itest/**</exclude>
    </excludes>
    </configuration>
<executions>
    <execution>
        <id>inttests</id>
        <goals>
            <goal>test</goal>
        </goals>
        <phase>integration-test</phase>
        <configuration>
            <excludes><exclude>none</exclude></excludes>
            <includes>
                <include>**/itest/**/*Test.java</include>
            </includes>
        </configuration>
    </execution>
</executions>
</plugin>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top