我正在编写一个maven插件,根据我以前的经验,我知道我的mojo类最终会用一堆@Parameter进行配置。我想做的是将这些配置参数注入第二个仅配置类,而不是将这些配置参数注入mojo类。这可能吗?

我当前的操作方式是mojo类,只是构造一个Configuration对象,并在其中传递所有注入的参数。像这样

@Mojo
public class MyMojo extends AbstractMojo {

  private MyConfig myConfig;

  @Parameter
  private String myArg1;

  ...

  public void execute() {
     myConfig = new MyConfig(myArg1, myArg2, ...);
  }
}

但是,这很丑陋。我希望DI直接在Config中发生

最佳答案

如果MyConfig是pojo,则也可以在此处使用@Parameter,但是,您的配置将如下所示:

<configuration>
  <myConfig>
    <someField>value</someField>
  </myConfig>
</configuration>

第二个技巧是使用setter,因为@Parameter注释字段将使用匹配的 public setter(如果有)。
private MyConfig myConfig = new MyConfig();

@Parameter
private String someField;

// matching setter for @parameter-annotated field
public void setSomeField( String field )
{
  myConfig.setSomeField( field );
}

关于maven - 在Maven插件的不同类中注入(inject)@Parameter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20696862/

10-10 03:03