43 votes

Partager les ressources de test entre les projets maven

Il est clair que la solution pour le partage de la commune de test de code entre les projets maven à l'aide de test-jar objectif maven-jar-plugin plugin (voir ici).

J'ai besoin de faire la même chose avec les ressources du test, en particulier, j'ai envie de ressources de test du projet A être disponible dans le classpath du projet B en cours de test.

Pour le projet A un besoin de déclarer:

<!-- Package and attach test resources to the list of artifacts: -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <jar destfile="${project.build.directory}/test-resources.jar">
                        <fileset dir="${project.basedir}/test-resources" />
                    </jar>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>attach-artifact</goal>
            </goals>
            <configuration>
                <artifacts>
                    <artifact>
                        <file>${project.build.directory}/test-resources.jar</file>
                        <type>jar</type>
                        <classifier>test-resources</classifier>
                    </artifact>
                </artifacts>
            </configuration>
        </execution>
    </executions>
</plugin>

Et dans le projet B, il sera normal de la dépendance:

<dependency>
    <groupId>myproject.groupId</groupId>
    <artifactId>myartifact</artifactId>
    <version>1.0-SNAPSHOT</version>
    <classifier>test-resources</classifier>
    <scope>test</scope>
</dependency>

Question: Doit-elle fonctionner dans tous les cas? Est-il possible de pack de ressources sans maven-antrun-plugin (à l'aide de plus 'léger' plugin)?

39voto

Pascal Thivent Points 295221

Suffit d'utiliser jar:test-jar déclarent l'résultant BOCAL en tant que dépendance (reportez-vous à ce guide pour plus de détails). Et tandis que je ne comprends pas le problème d'avoir des ressources et des classes dans ce pot, vous pouvez toujours exclure tous .class fichiers:

<project>
  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.2</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
       <configuration> 
         <excludes>
           <exclude>**/*.class</exclude>
         </excludes>
       </configuration> 
     </plugin>
    </plugins>
  </build>
</project>

Et pour l'utiliser:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project>

0voto

sal Points 8058

Il y a déjà un but de construire un test de pot de maven.

Si vous avez besoin de quelque chose d'un peu plus souple, vous pouvez utiliser le jar du plugin pour l'emballage de vos ressources de test et exécuter cet objectif avec le paquet principal objectif avec quelque chose comme ça.

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>test-resources</classifier>
              <includes>
                <include>**/*.whatever-you-want</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>

Tout ce que vous voulez groupés serait ajouté à la project-name-version-test-resources.jar quand le bocal objectif est exécuté.

Vous pouvez ensuite l'inclure dans un projet via la même dépendance que vous utilisez ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X