2010-11-22 58 views
1

Cela devrait être simple - je pense que je suis juste en train de négliger quelque chose. Je simple Mojo:Plug-in Maven Mojo simple: Paramètre booléen

package com.company.product.plugins; 

import org.apache.maven.plugin.AbstractMojo; 
import org.apache.maven.plugin.MojoExecutionException; 

/** 
* @goal diff 
*/ 
public class CCDiffMojo extends AbstractMojo { 

    /** 
    * @parameter expression="${ccdiff.run}" default-value="true" 
    */ 
    private boolean run; 

    public void execute() throws MojoExecutionException { 
     if (run) { 
      getLog().info("Executing..."); 
      // TODO: Execute. 
     } else { 
      getLog().info("Skipping."); 
     } 
    } 
} 

Et le contenu pom.xml:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company.product.plugins</groupId> 
    <artifactId>ccdiff</artifactId> 
    <packaging>maven-plugin</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Content Catalog Diff</name> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven</groupId> 
      <artifactId>maven-plugin-api</artifactId> 
      <version>2.0</version> 
     </dependency> 
    </dependencies> 
</project> 

Tout cela est à peu près tiré de la Maven plugin development guide.

Ainsi, il semble que je peux faire:

$ mvn com.company.product.plugins:ccdiff:diff 

Et cela fonctionne pour exécuter la branche où je vais plop dans la logique de cet outil personnalisé (il est le genre d'un XML diff). Le paramètre booléen est un drapeau qui permettra à quelqu'un de désactiver l'exécution lors de la construction d'un projet plus grand. Cependant, lorsque je tente:

$ mvn com.company.product.plugins:ccdiff:diff -Dccdiff.run=false 

Il affiche toujours le message « Executing ... », ce qui signifie le paramètre est réglé pour se une raison quelconque.

Des idées? Je pense que ça va être l'un de ces "D'oh!" les erreurs.

Répondre

0

Votre but est appelé diff ... @goal diff, essayez donc la ligne de commande sans 'cc' comme suit:

$ mvn com.company.product.plugins:ccdiff:diff -Ddiff.run=false 

EDIT: Prenez 2.

Je créé le projet que vous avez ça, et ça marche pour moi comme tu l'as.
Je suis en cours d'exécution Maven 2.2.1, voici la sortie:

C:\java\ws\ccdiff>set MAVEN_OPTS=-DXms_1024M -DXmx=2048M 
[INFO] Scanning for projects... 
[INFO] artifact com.company.product.plugins:ccdiff: checking for updates from central 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Unnamed - com.company.product.plugins:ccdiff:maven-plugin:1.0-SNAPSHOT 
[INFO] task-segment: [com.company.product.plugins:ccdiff:diff] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [ccdiff:diff {execution: default-cli}] 
[INFO] Executing... 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 8 seconds 
[INFO] Finished at: Tue Nov 23 16:27:10 CAT 2010 
[INFO] Final Memory: 1M/4M 
[INFO] ------------------------------------------------------------------------ 
C:\java\ws\ccdiff>mvn com.company.product.plugins:ccdiff:diff -Dccdiff.run=false 

C:\java\ws\ccdiff>set MAVEN_OPTS=-DXms_1024M -DXmx=2048M 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Unnamed - com.company.product.plugins:ccdiff:maven-plugin:1.0-SNAPSHOT 
[INFO] task-segment: [com.company.product.plugins:ccdiff:diff] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [ccdiff:diff {execution: default-cli}] 
[INFO] Skipping. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: < 1 second 
[INFO] Finished at: Tue Nov 23 16:27:20 CAT 2010 
[INFO] Final Memory: 1M/4M 
[INFO] ------------------------------------------------------------------------ 
C:\java\ws\ccdiff> 
+0

Non, cela ne fonctionne toujours pas. J'ai l'expression du paramètre référençant 'ccdiff.run', que je pensais devoir faire correspondre. Je vais essayer de changer cela en '$ {diff.run}' pour voir si cela fonctionne (NDLR: pas de dés pour ça non plus). – emptyset

+0

Bizarre. J'ai copié le fichier Mojo et le fichier pom dans un répertoire séparé pour répliquer le problème en dehors du projet existant. J'ai obtenu ceci à la place: 'But requis non trouvé: com.company.product.plugins: ccdiff: diff dans com.company.product.plugins: ccdiff: 1.0-SNAPSHOT' – emptyset

+0

Il s'avère qu'il me manquait le répertoire src/main/java entre autres choses - et a dû inclure maven-compiler-plugin avec la source/cible fixé à 1.5 ... – emptyset