2013-08-26 2 views
1

Je voudrais utiliser le plugin Sonar pour qu'il s'exécute uniquement s'il est activé dans mon profil Maven. Sonar fonctionne actuellement à chaque compilation.Activer/Désactiver le plugin sonar maven par profil?

Le problème est que la génération échouera pour les autres membres de l'équipe pour lesquels l'application Sonar n'est pas installée localement. Le fichier pom.xml est archivé afin que tous les membres de l'équipe obtiennent la même copie, y compris la configuration du sonar, mais je ne veux pas qu'ils la modifient uniquement dans le but de désactiver Sonar (ils pourraient par inadvertance vérifier leur copie modifiée).

Veuillez indiquer comment configurer Maven (.m2/settings.xml) et/ou pom.xml afin que la fonctionnalité Sonar puisse être activée/désactivée par un profil local.

Voici la configuration Sonar actuellement dans le pom.xml de chaque projet:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
     <execution> 
      <id>make-sonar</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>sonar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

Mon conseil serait de ne pas attacher l'exécution du sonar à une phase Maven et même si cela est fait par un profil Maven. Déclencher une analyse d'un projet avec Sonar doit être fait directement à l'aide de la commande "sonar: sonar" et cela doit être planifié dans votre moteur ci. –

Répondre

1

Il suffit d'inclure votre configuration dans un profil Maven:

<profiles> 
    <profile> 
     <id>sonar</id> 
     <build> 
      <plugins> 
      <!-- Your Sonar config here --> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Puis invoquez Maven avec le profil activé: mvn clean install -Psonar

Depuis Maven 2.09, vous pouvez automatiquement activer un plugin basé sur la présence d'un fichier. Donc, vous pouvez ajouter le activation suivant au profil ci-dessus:

<activation> 
    <file> 
     <exists>/full/path/to/sonar/installation</exists> 
    </file> 
</activation> 

Si des chemins absolus vous font des démangeaisons (comme ils le font pour moi), exists pouvez également interpoler propriétés du système. Vous pouvez rapidement aller trop loin, et les POM ne devraient rien savoir du système sur lequel un projet est construit, alors soyez prudents. Vos problèmes sont révélateurs d'un problème plus profond: pourquoi est-ce que seulement regarde SonarQube? La qualité logicielle est un effort partagé, et SonarQube prospère en s'exécutant automatiquement dans un emplacement central. Vous voulez probablement installer SonarQube dans votre environnement CI et lancer une analyse sur chaque build. Ensuite, vous et vos collègues pouvez simplement exécuter SonarQube IDE pour vérifier votre travail avant de vous engager.

Questions connexes