Простой плагин Maven Mojo: логический параметр - PullRequest
1 голос
/ 22 ноября 2010

Это должно быть просто - я думаю, что просто что-то упускаю. У меня есть простой Mojo:

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.");
        }
    }
}

И содержимое 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>

Это все в значительной степени взято из Руководства по разработке плагинов Maven .

Итак, похоже, я могу сделать:

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

И это работает, чтобы выполнить ветку, в которой я собираюсь добавить логику для этого пользовательского инструмента (это своего рода различие XML). Логический параметр - это флаг, который позволит кому-либо отключить выполнение при сборке более крупного проекта. Однако, когда я пытаюсь:

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

По-прежнему отображается сообщение «Executing ...», означающее, что параметр по какой-то причине не устанавливается.

Есть идеи? Я чувствую, что это будет один из этих "D'Oh!" ошибки.

1 Ответ

0 голосов
/ 22 ноября 2010

Ваша цель называется diff ... @goal diff, поэтому попробуйте командную строку без 'cc' следующим образом:

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

РЕДАКТИРОВАТЬ: взять 2.

Я создал проект таким, какой он есть у вас, и он работает для меня так же, как и у вас.
Я бегу Maven 2.2.1, вот вывод:

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