17.5.4. Mojo参数注解

除非你坚持要手工编写自己的插件描述符,否则你完全不需要编写那个XML文件。Maven Plugin插件有一个plugin:descriptor目标绑定到了generate-resources阶段。该目标根据Mojo的注解生成插件描述符。要配置Mojo参数,你应该使用下列的注解,将其声明到私有成员变量上。你也可以在公有setter方法上使用这些注解,但Maven插件一般的约定是直接注解私有成员变量。

@parameter [alias="someAlias"] [expression="${someExpression}"] [default-value="value"]

标记一个私有字段(或者一个setter方法)为一个参数。alias提供该参数的名称。如果没有alias,Maven会使用变量名为参数名。expression是一个Maven用来计算并获值的一个表达式。通常这个表达式只是一个属性引用如${echo.message}default-value是当表达式不能求得值,POM的插件配置中也没有显式提供时,Mojo会使用的值。

@required

如果使用了该注解,那么在该Mojo运行前该参数就必须要有一个可用的值。如果Maven试图运行该Mojo的时候该参数的值为null,Maven就会抛出一个错误。

@readonly

如果使用该注解,用户就不能从POM直接配置这个参数。你就需要parameter注解的expression属性。例如,如果你想要确保一个特定参数的值永远是POM中finalName属性的值,你就可以使用表达式book,并添加这个@readOnly注解。这样,用户就只能通过更改POM中finalName的值来更改这个参数的值。

@component

告诉Maven使用Plexus组件填充该字段。一个正确的@component注解值如下:

@component role="org.codehaus.plexus.archiver.Archiver" roleHint="zip"

该配置的效果是可以从Plexus获得ZipArchiver组件。ZipArchiver是一个对应role hint为zip的Archiver组件。除了@component注解,你也可以使用@parameter注解和一个expression属性,如:

@parameter expression="${component.org.codehaus.plexus.archiver.Archiver#zip}"

虽然两种注解的效果一样,但对于配置Plexus组件依赖来说,@component注解是更推荐的方式。

@deprecated

该参数以过期,不再推荐使用。用户可以继续配置该参数,但会得到一条警告信息。