首页 » Maven实战 » Maven实战全文在线阅读

《Maven实战》17.4 Mojo参数

关灯直达底部

正如在代码清单17-2中所看到的那样,我们可以使用@parameter将Mojo的某个字段标注为可配置的参数,即Mojo参数。事实上几乎每个Mojo都有一个或者多个Mojo参数,通过配置这些参数,Maven用户可以自定义插件的行为。7.5.2节和7.5.3节就分别配置了maven-compiler-plugin和maven-antrun-plugin的Mojo参数。

Maven支持种类多样的Mojo参数,包括单值的boolean、int、float、String、Date、File和URL,多值的数组、Collection、Map、Properties等。

·boolean(包括boolean和Boolean)

对应的配置如下:

·int(包括Integer、long、Long、short、Short、byte、Byte)

对应的配置如下:

·float(包括Float、double、Double)

对应的配置如下:

·String(包括StringBuffer、char、Character)

对应的配置如下:

·Date(格式为yyyy-MM-dd HH:mm:ss.S a或者yyyy-MM-dd HH:mm:ssa)

对应的配置如下:

或者

·File

对应的配置如下:

·URL

对应的配置如下:

·数组

对应的配置如下:

·Collection(任何实现Collection接口的类,如ArrayList和HashSet)

对应的配置如下:

·Map

对应的配置如下:

·Properties

对应的配置如下:

一个简单的@parameter标注就能让用户配置各种类型的Mojo字段,不过在此基础上,用户还能为@parameter标注提供一些额外的属性,进一步自定义Mojo参数。

·@parameter alias=“<aliasName>”

使用alias,用户就可以为Mojo参数使用别名,当Mojo字段名称太长或者可读性不强时,这个别名就非常有用。例如:

对应的配置如下:

·@parameter expression=“${aSystemProperty}”

使用系统属性表达式对Mojo参数进行赋值,这是非常有用的特性。配置了@parameter的expression之后,用户可以在命令行配置该Mojo参数。例如,maven-surefire-plugin的test目标有如下源码:

用户可以在POM中配置skip参数,同时也可以直接在命令行使用-Dmaven.test.skip=true来跳过测试。如果Mojo参数没有提供expression,那就意味着该参数无法在命令行直接配置。还需要注意的是,Mojo参数的名称和expression名称不一定相同。

·@parameter default-value=“aValue/${anExpression}”

如果用户没有配置该Mojo参数,就为其提供一个默认值。该值可以是一个简单字面量如“true”、“hello”或者“1.5”,也可以是一个表达式,以方便使用POM的某个元素。

例如,下面代码中的参数sampleBoolean默认值为true:

代码清单17-2中有如下代码:

表示默认使用POM元素<project><build><sourceDirectory>的值。

除了@parameter标注外,还看到可以为Mojo参数使用@readonly和@required标注。

·@readonly

表示该Mojo参数是只读的,如果使用了该标注,用户就无法对其进行配置。通常在应用POM元素内容的时候,我们不希望用户干涉。代码清单17-2就是很好的例子。

·@readonly

表示该Mojo参数是必须的,如果使用了该标注,但是用户没有配置该Mojo参数且其没有默认值,Maven就会报错。