2017-02-04 1 views
0

J'utilise Maven-Inovker-Plugin pour exécuter des tests d'intégration. J'ai un post-build-hook-script appelé verify.groovy pour vérifier les résultats des tests d'intégration. Dans le script groovy, j'ai besoin d'accéder à certaines propriétés du POM d'origine. Comment je fais ça?Comment utiliser ScriptVariables dans Maven-Invocateur-Plugin avec PostBuildHookScript Groovy

Jusqu'à présent, je mets cela dans le bloc de configuration pour maven-invoker-plugin:

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-invoker-plugin</artifactId> 
       <version>1.7</version> 
       <configuration> 
        <debug>true</debug> 
        <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> 
        <projectsDirectory>src/test/resources/invoker-tests</projectsDirectory> 
        <pomIncludes> 
         <pomInclude>*/pom.xml</pomInclude> 
        </pomIncludes> 
        <postBuildHookScript>verify</postBuildHookScript> 
        <scriptVariables> 
         <param>${skip.var1}</param> 
         <param>${skip.var2}</param> 
        </scriptVariables> 
        <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> 
        <goals> 
         <goal>clean</goal> 
         <goal>package</goal> 
        </goals> 
       </configuration> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

J'ai mis des valeurs dans scriptVariables de la documentation here. Je suis sûr que je l'ai fait mal, quelle est la bonne façon?

Et puis comment puis-je accéder à la variable skip.var1 et skip.var2 dans mon script groovy? Je suis incapable de trouver de la documentation ou des exemples à ce sujet. Jusqu'à présent, j'ai essayé ce qui suit, mais cela ne fonctionne pas.

def var1 = skip.var1 

Mais j'obtiens l'erreur:

groovy.lang.MissingPropertyException: No such property: skip for class: Script1 

Comment puis-je accéder correctement la variable?

+1

Je recommande d'utiliser 'src/main/il s' comme dossier pour vos tests d'intégration ... Si vous avez besoin de donner des valeurs de votre pom d'origine à l'épreuve d'intégration pom cela pourrait être fait en utilisant '@ ... @' dans votre test d'intégration pom qui est filtré lors de l'exécution de maven-invoker-plugin ... Et s'il vous plaît utilisez la version la plus récente de maven-invoker-plugin ... – khmarbaise

Répondre

0

a dû changer la version à 1,9 ou plus, comme mentionné ici: http://maven.apache.org/plugins/maven-invoker-plugin/integration-test-mojo.html#scriptVariables

Il y avait également d'avoir en dessous de configuration passer les variables:

    <scriptVariables> 
         <var1>${skp.var1}</var1> 
        </scriptVariables> 

Et dans le script groovy, je peux directement utiliser var1.

C'est donc ce qui a fonctionné:

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-invoker-plugin</artifactId> 
       <version>2.0.0</version> 
       <configuration> 
        <debug>true</debug> 
        <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> 
        <projectsDirectory>src/test/resources/invoker-tests</projectsDirectory> 
        <pomIncludes> 
         <pomInclude>*/pom.xml</pomInclude> 
        </pomIncludes> 
        <postBuildHookScript>verify</postBuildHookScript> 
        <scriptVariables> 
         <var1>${skip.var1}</var1> 
        </scriptVariables> 
        <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> 
        <goals> 
         <goal>clean</goal> 
         <goal>package</goal> 
        </goals> 
       </configuration> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
+1

Ajout d'un plugin car une dépendance est tout simplement fausse! Vous ne devez pas utiliser le dossier resources du projet en tant que projectsDirectory. La meilleure pratique est d'utiliser 'src/main/it' comme ceci ... En outre' 'vous n'avez pas besoin de donner explicit, parce que c'est par défaut. – khmarbaise

+0

@khmarbaise J'ai modifié pour supprimer la dépendance. Je ne sais pas pourquoi à l'époque il semblait nécessaire d'ajouter. Dans l'ensemble, la version était le problème. Merci pour les autres conseils. Question: pourquoi 'src/main/it'? Y a-t-il une raison ou une documentation/un exemple particulier que vous pouvez me signaler? Puisque c'est pour tester, il est logique de mettre cela dans 'src/test /', plutôt que 'src/main'. –

+0

Je l'ai mal orthographié, il devrait être 'src/il s' qui peut être lu dans la [mise en page de répertoire par défaut] (https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout. html). 'src/test' sont généralement pour les tests unitaires et non pour le test d'intégration ni pour le test d'intégration des plugins ... voir de nombreux exemples dans les autres plugins maven. – khmarbaise