示例:使用 Maven 3 生命周期扩展
生命周期参与
您可以根据需要扩展多个类:
构建你的扩展
创建一个具有依赖org.apache.maven:maven-core:3.8.5
和其他依赖的 Maven 项目:
<groupId>org.apache.maven.extensions</groupId> <artifactId>beer-maven-lifecycle</artifactId> <version>1.0-SNAPSHOT</version> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> <version>3.8.5</version> </dependency> <!-- dependency for plexus annotation --> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-component-annotations</artifactId> <version>1.7.1</version> </dependency>
创建你的扩展类
// your extension must be a "Plexus" component so mark it with the annotation @Component( role = AbstractMavenLifecycleParticipant.class, hint = "beer") public class BeerMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { @Override public void afterSessionStart( MavenSession session ) throws MavenExecutionException { // start the beer machine } @Override public void afterProjectsRead( MavenSession session ) throws MavenExecutionException { // ask a beer to the machine } }
在构建扩展 jar 期间生成 plexus 元数据:
<build> ... <plugins> ... <plugin> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-component-metadata</artifactId> <version>1.7.1</version> <executions> <execution> <goals> <goal>generate-metadata</goal> </goals> </execution> </executions> </plugin> ... </plugins> ... </build>
在您的构建中使用您的扩展
您有 3 种在构建中使用扩展的方法:
- 在中添加您的扩展 jar
${maven.home}/lib/ext
, - 将其作为构建扩展添加到您的 pom 中,
- (从 Maven 3.3.1 开始)在
.mvn/extensions.xml
.
注意:如果您使用构建扩展机制,afterSessionStart
则不会调用该方法,因为扩展是稍后在构建中加载的
要在您的项目中使用构建扩展,请在您的 pom 中将其声明为:
<build> ... <extensions> ... <extension> <groupId>org.apache.maven.extensions</groupId> <artifactId>beer-maven-lifecycle</artifactId> <version>1.0-SNAPSHOT</version> </extension> ... </extensions> ... </build>