【发布时间】:2015-03-15 19:10:38
【问题描述】:
我有两个使用相同重复方法的插件。然后我想重构并将该方法移动到共享类并将其托管在依赖项 jar 中。
这些方法需要一些 maven 属性,如 MavenProject、PluginDescriptor 和其他一些过去注入到 mojo 中的 maven 类。
是否有这样的属性可以直接注入到共享类中?
还是我需要将它们注入到 mojo 中然后调用一些初始化方法?
我用@Named 声明了共享类,并用@Inject 创建了一个构造函数。 mojo 类也有一个构造函数(下面的代码)。 然后我尝试运行它。所有值都被正确注入到 mojo 中,但共享类对象内部属性值为 null。
@Inject
public SharedValidationHelperDefault(final MavenProject project,
final BuildContext buildContext,
final RuntimeInformation runtimeInformation, final Log log) {
this.buildContext = buildContext;
this.project = project;
this.runtimeInformation = runtimeInformation;
this.log = log;
}
...
@Inject
public AbstractContainerPackMojo(
final RuntimeInformation runtimeInformation,
final MavenProjectHelper projectHelper,
final BuildContext buildContext, SharedValidationHelper validationHelper) {
this.validationHelper = validationHelper;
this.buildContext = buildContext;
this.runtimeInformation = runtimeInformation;
this.projectHelper = projectHelper;
}
【问题讨论】: