Mojo参数命令行设置疑问:默认值参数能否覆盖?是否需property属性?
Maven Mojo 参数命令行设置问题解答
问题1:如何在参数未配置property属性时,从命令行设置Mojo参数?
没问题,就算你的Mojo参数没指定property属性,照样能通过命令行设置,有两种常用方式:
直接使用参数字段名作为系统属性:
假设你的Mojo里有这么个参数:@Parameter private String outputPath;那命令行里直接用
-D加上字段名就能赋值:mvn your-plugin:your-goal -DoutputPath=/usr/local/my-output带插件标识的系统属性(更安全):
如果怕多个插件有同名参数冲突,还可以加上插件的前缀(或者artifactId)来明确:mvn your-plugin:your-goal -Dyour-plugin.outputPath=/usr/local/my-output这里的
your-plugin就是你在插件pom里配置的<prefix>值,或者直接用插件的artifactId也行。
问题2:若Mojo通过@Parameter(defaultValue = "target/ejbstubs-dep") private String workdir;定义参数,能否从命令行覆盖该参数?是否必须为该参数配置property属性?
当然能覆盖!而且完全不需要额外配置property属性,用刚才问题1里的两种方式都可以:
直接用字段名覆盖默认值:
mvn your-plugin:your-goal -Dworkdir=/my/custom/work-directory带插件标识的方式:
mvn your-plugin:your-goal -Dyour-plugin.workdir=/my/custom/work-directory
要是你之后想给这个参数整个更语义化的属性名,才需要加property配置,比如:
@Parameter(defaultValue = "target/ejbstubs-dep", property = "ejb.stubs.workdir") private String workdir;
这时候就可以用自定义的属性名来设置了:
mvn your-plugin:your-goal -Dejb.stubs.workdir=/custom/path
但这属于可选优化,不是覆盖默认值的必要条件哦。
内容的提问来源于stack exchange,提问作者JF Meier
相关产品推荐
相关产品推荐

