如何为 Maven 插件指定默认目标?
How to specify a default goal for a Maven plugin?
我已经定义了一个具有多个目标的 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>
块时,如何指定默认应该 运行 的目标?
我假设您正在使用 Java5 注释将您的插件标记为可用 mojo? (而不是 javadoc 的生活方式)。
@Mojo
注释具有 defaultPhase 属性。
一旦用户将插件添加到构建中,将使用这些默认值(如果已设置)。
Flyway Migrate Mojo也是这样做的。
编译器插件是一个不好的例子,因为它是 Maven life-cycle 本身的 default plugin bindings 的一部分。所以这个阶段本身会知道 运行.
有什么魔力
这些是 maven plugin api, the one for using annotations 就在附近的文档。
如果它不是你的插件,你可以将你想要的配置放入父 pom 到 pluginManagement
部分。
据我所知,Maven 插件没有默认目标。
您可以在不添加目标的情况下配置插件。但这并没有执行插件。
插件必须在命令行上显式执行(如 flyway:migrate
)或通过生命周期自动执行(如 compile:compile
或 jar:jar
)。
我已经定义了一个具有多个目标的 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>
块时,如何指定默认应该 运行 的目标?
我假设您正在使用 Java5 注释将您的插件标记为可用 mojo? (而不是 javadoc 的生活方式)。
@Mojo
注释具有 defaultPhase 属性。
一旦用户将插件添加到构建中,将使用这些默认值(如果已设置)。
Flyway Migrate Mojo也是这样做的。
编译器插件是一个不好的例子,因为它是 Maven life-cycle 本身的 default plugin bindings 的一部分。所以这个阶段本身会知道 运行.
有什么魔力这些是 maven plugin api, the one for using annotations 就在附近的文档。
如果它不是你的插件,你可以将你想要的配置放入父 pom 到 pluginManagement
部分。
据我所知,Maven 插件没有默认目标。
您可以在不添加目标的情况下配置插件。但这并没有执行插件。
插件必须在命令行上显式执行(如 flyway:migrate
)或通过生命周期自动执行(如 compile:compile
或 jar:jar
)。