2015-03-15 4 views
0

У меня есть два плагина, которые используют одинаковые дублированные методы. Затем я хочу реорганизовать и переместить эти методы в общий класс и разместить его в банке зависимости.Ввод свойств maven в mojo с Sisu

Этим методом требуются некоторые свойства 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; 
} 

ответ

0

Там разница между Mojo аннотации и компонентов/JSR330 аннотации: они имеют разные цели и по-разному вводят. Тем не менее, возможно иметь абстрактный/общий Mojo. Посмотрите на проект surefire: и у плагина surefire, и у failafe-plugin есть общий код Mojo & Конфигурация в отдельном модуле (http://maven.apache.org/surefire/maven-surefire-common/index.html)

+0

Я думаю, что я знаю об этих различиях. Я не понял, почему инъекция с @inject на mojo работает, но эта инъекция не работает в общем классе. – Cristiano