Maven Plugin插件descriptor goal使用注解无法生成Mojo文档
不用废弃@goal标签生成Maven插件描述符的解决办法
1. 确认Maven Plugin Plugin版本
老版本的maven-plugin-plugin对注解式Mojo支持不完善,直接使用3.6.0及以上版本(比如3.6.2),在pom.xml中明确指定插件版本:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.6.2</version> <executions> <execution> <id>default-descriptor</id> <goals> <goal>descriptor</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2. 检查@Mojo注解的正确使用
确保你的Mojo类满足以下要求:
- 必须继承
AbstractMojo(或实现Mojo接口,继承抽象类更简便) - @Mojo注解的
name属性必须设置,这对应插件的goal名称 - 类为public权限,且包含无参构造函数
示例正确的Mojo类:
import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; @Mojo(name = "rewrite") public class RewriteMojo extends AbstractMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Running rewrite goal"); } }
3. 确认依赖配置正确
引入匹配版本的maven-plugin-api和注解依赖:
<dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>3.8.6</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.6.2</version> <scope>provided</scope> </dependency> </dependencies>
4. 清理并重新构建
执行命令清理旧构建文件,重新生成描述符:
mvn clean plugin:descriptor
5. 检查插件执行阶段配置
如果插件绑定了特定执行阶段,确保execution配置中包含descriptor目标的执行,避免遗漏。
内容的提问来源于stack exchange,提问作者Mike Solomon
相关产品推荐
相关产品推荐

