You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Maven插件@Parameter注解Setter方法不生效问题排查

问题分析与解决

你的问题出在**@Parameter注解的位置**——Maven插件的参数绑定逻辑里,当注解标注在字段上时,会直接通过反射给字段赋值,不会触发对应的setter方法。要让setDestinationDirectory被调用,你需要调整注解的位置。

解决方案:将@Parameter移到setter方法上

修改插件代码,把@Parameter注解从字段_destinationDirectory移到setDestinationDirectory方法上:

private String _destinationDirectory;
private Path dstDirRoot;

@Parameter(property = "destinationDirectory", defaultValue = "${project.build.directory}/generated-resources")
public void setDestinationDirectory(String destinationDirectory) {
    Path dstDir = Paths.get(destinationDirectory);
    if (dstDir.isAbsolute()) {
         this._destinationDirectory = dstDir.toString();
    } else {
         this._destinationDirectory = Paths.get(baseDir, dstDir.toString()).toString();
    }
    dstDirRoot = Paths.get(this._destinationDirectory);
}

补充说明

  1. Maven插件参数绑定规则:
    • 注解在字段上:直接反射赋值,跳过setter
    • 注解在setter上:调用setter完成赋值,这也是你需要的触发逻辑
  2. 确保baseDir已正确注入:如果baseDir指向项目根目录,需要给它也添加@Parameter注解,示例:
    @Parameter(property = "project.basedir", readonly = true)
    private File baseDir;
    

内容的提问来源于stack exchange,提问作者Kiran Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:40:37