2016-07-25 4 views
3

J'ai un projet qui contient des tests, tout ce qu'il fait est de créer un test-jar pour être exécuté par d'autres projets. Et cela dépend d'un autre artefact, nous allons l'appeler artefact XInjection de dépendances et tests

alors il y a plusieurs autres projets qui exécutent le test-jar, en utilisant le maven-surefire-plugin

J'ai plusieurs implémentations d'artefact X et ce que je veux faire est de être en mesure d'exécuter ces tests en utilisant la mise en œuvre que je veux, non X

donc par exemple:

dans le projet A Je veux exécuter les tests en utilisant la mise en œuvre A

dans le projet B Je veux exécuter les tests en utilisant la mise en œuvre B

cela ne semble pas être possible, car une fois le test-jar généré, il a l'artefact X codé en dur dans ce

si Je suis ouvert à toutes les autres solutions

Edit:

informations supplémentaires:

le fichier pom du projet de génération de tests:

la partie de génération de la test-jar

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

l'artefact X dépendance:

<dependency> 
     <groupId>com.conztanz</groupId> 
     <artifactId>X</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </dependency> 

le fichier de pom de l'un des projets exécution des tests (projet A):

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.15</version> 
      <configuration> 
       <dependenciesToScan> 
        <dependency>testJar</dependency> 
       </dependenciesToScan> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Idéalement ce que je veux est de faire quelque chose qui dit projet A-Override artefact X avec sa propre implémentation

J'espère que cela a plus de sens maintenant

+1

Ceci est trop abstrait pour que je puisse me débrouiller. Peut-être que vous pourriez poster les parties pertinentes de divers 'pom.xml', avec une structure de projet simplifiée? – Stewart

+0

okay je vais ajouter quelques exemples – isco

Répondre

1

Je pense que vous êtes à la recherche de la portée appelé provided.

La dépendance ressemblerait à ceci:

<dependency> 
    <groupId>com.conztanz</groupId> 
    <artifactId>X</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <scope>provided</scope> 
</dependency> 

Ce Maven: « Hé, je besoin de ceci pour compiler, mais ne pas inclure dans la sortie cible, car un récipient (ou quelque chose) sera fournissez le pot lui-même. "

+0

intéressant, et comment pensez-vous que d'autres projets devraient fournir leurs implémentations de l'artefact X? – isco

+0

Comme une dépendance normale, dans leur propre 'pom.xml' – Stewart