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.
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
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
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