maven插件需用@parameter注解声明参数字段以支持pom配置和命令行传参,支持基本类型、集合及自定义对象,required=true时未配置会抛mojoexecutionexception,并可通过configuration块或-d参数赋值,还可按生命周期阶段绑定不同参数值。

要在Maven插件中让使用者能传入灵活的配置值,比如指定输出路径、开关功能或注入运行时变量,就必须在Mojo类中正确定义可被POM识别并绑定的参数字段。
声明参数字段
在Mojo实现类中,用@Parameter注解标记需要暴露给POM的字段。该注解支持property(用于命令行-M参数映射)、defaultValue(未配置时的 fallback 值)和required(是否强制填写)等属性。
【property名称必须与命令行-M参数名严格一致】,否则mvn -Dxxx=yyy无法生效;若不设property,则只能通过POM的
例如:@Parameter(property = "outputDir", defaultValue = "${project.build.directory}/generated") private File outputDir;
配置参数类型与约束
支持基本类型(String、int、boolean)、集合(List
对于集合类型,POM中需用<list><item>xxx</item></list>语法;Map则用<map><entry><key>k</key><value>v</value></entry></map>结构。
若字段标注了@Parameter(required = true)但POM未配置,Maven会在执行阶段抛出MojoExecutionException并中断构建。
在POM中传入参数值
方法一:通过
在
<configuration><outputdir>${project.basedir}/custom-out</outputdir><verbose>true</verbose></configuration>
方法二:通过命令行动态传参
执行mvn groupId:artifactId:version:goal -DoutputDir=/tmp/out -Dverbose=false,前提是字段已声明@Parameter(property = "outputDir")。
【property名区分大小写,且不能含点号或连字符】,例如-Dmy.param=value会失败,应改为-DmyParam=value并在代码中对应@Parameter(property = "myParam")。
绑定参数到生命周期阶段
第一步:在
第二步:为每个generate-sources)和generate)
第三步:在该
例如:同一插件在generate-sources阶段生成DTO,在process-classes阶段校验注解,两阶段使用完全不同的











