除非你坚持要手工编写自己的插件描述符,否则你完全不需要编写那个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
-
该参数以过期,不再推荐使用。用户可以继续配置该参数,但会得到一条警告信息。