如何为 Maven 插件指定默认目标



我定义了一个具有多个目标的Maven插件。目前用户按如下方式运行我的插件:

<plugin>
    <groupId>myGroupId</groupId>
    <artifactId>myArtifactId</artifactId>
    <version>someVersion</version>
    <executions>
        <execution>
            <goals>
                <goal>myGoal</goal>
            </goals>
        </execution>
    </executions>
</plugin>

但是我见过其他插件,例如maven-compiler-plugin和Flyway,它们不需要指定execution:https://flywaydb.org/getstarted/java

<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>5.2.4</version>
    <configuration>
        <url>jdbc:h2:file:./target/foobar</url>
        <user>sa</user>
        <locations>
            <location>classpath:db/migration</location>
        </locations>
    </configuration>
</plugin>

如何指定用户排除<executions>块时默认运行的目标?

AFAIK,Maven插件没有默认目标。

您可以在不添加目标的情况下配置插件。但这不会执行插件。

插件必须在命令行上显式执行(如flyway:migrate(,或在整个生命周期中自动执行(如compile:compilejar:jar(。

我假设您正在使用 Java5 注释将您的插件标记为可用的 mojo?(而不是Javadoc的生活方式(。

@Mojo批注具有 defaultPhase 属性。

一旦用户将插件添加到构建中,这些默认值(如果设置(将被使用。

Flyway Migrate Mojo也是这样做的。

编译器插件是一个不好的例子,因为它是 maven 生命周期本身的默认插件绑定的一部分。因此,阶段本身将知道要运行什么魔力。

这些是 maven 插件 API 的文档,使用注释的文档就在附近。

如果它不是您的插件,您可以将您想要的配置放入pluginManagement部分的父 pom 中。

相关内容

  • 没有找到相关文章

最新更新