我有两个使用相同重复方法的插件。然后我想重构这些方法,并将其移动到一个共享类中,并将其托管在一个依赖jar中。
这些方法需要一些maven属性,如MavenProject、PluginDescriptor和其他一些maven类,这些类通常被注入到mojo中。
有没有这样的属性可以直接注入到共享类中?
或者我需要将它们注入mojo,然后调用一些初始化方法?
我用@Named声明了共享类,并用@Inject创建了一个构造函数。mojo类也有一个构造器(下面的代码)。然后我试着运行它。所有的值都被正确地注入到mojo中,但是共享类对象的内部属性值为空。
@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;
}发布于 2015-03-16 05:57:38
Mojo批注和Component/JSR330批注之间有一个区别:它们的用途不同,注入方式也不同。然而,也可以有一个抽象的/共享的Mojo。看看surefire项目: surefire-plugin和failsafe-plugin在单独的模块( http://maven.apache.org/surefire/maven-surefire-common/index.html )中都有一些共享的Mojo代码和配置。
https://stackoverflow.com/questions/29064968
复制相似问题