2010-12-14 113 views
1

J'ai créé une bibliothèque en maven qui peut être étendue en implémentant certaines interfaces. Pour tester l'implémentation par défaut, j'ai écrit quelques matcheurs hamcrest qui vivent actuellement dans src/test/java.Publier les utilitaires de test du projet maven

Cependant, je pense qu'ils pourraient être utiles pour les utilisateurs de la bibliothèque s'ils veulent tester leur personnalisation.

Alors, comment puis-je les rendre disponibles? En les déplaçant vers src/main, Hamcrest aurait besoin d'une dépendance à l'exécution et je ne le veux pas.

Répondre

4

Il existe un moyen de créer un pot de test et de l'installer dans le référentiel à l'aide de la commande 'mvn jar: test-jar'. Ce pot peut ensuite être référencé par d'autres projets en utilisant le modificateur test-jar dans le bloc de dépendance.

Si vous voulez avoir ce pot construit et installé dans le cadre de votre votre normale « mvn install » construire ajouter la configuration de plugin suivante à votre pom:

De http://maven.apache.org/guides/mini/guide-attached-tests.html

<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> 
    </plugin> 
    </plugins> 
    </build> 
</project> 

Ensuite, d'autres projets peut référencer le pot de test comme suit:

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

Il semble que vous deviez les déplacer vers leur propre projet et le libérer. De là, vous pouvez déterminer dans le projet d'origine quelle portée vous souhaitez.

+0

Mais cela conduirait à des dépendances circulaires, n'est-ce pas? – Cephalopod

+0

C'est la solution que j'ai utilisée. Je ne suis pas sûr où serait une dépendance circulaire? –

+0

Pas nécessairement. Vous pouvez toujours déclarer les dépendances circulaires proposées comme portée fournie ou les exclure du projet qui en dépend. Il y a beaucoup de façons de contourner cela. – javamonkey79

1

Comme vous l'avez dit, déplacez-le dans src/main dans un nouveau projet. Laissez ce projet uniquement utilisé dans une dépendance de test et vous ne polluez pas le classpath de votre module.