Внедрение проекта Maven по умолчанию в другие компоненты Maven

Я разрабатываю плагин Maven и использую API сборки для создания пользовательской сборки сборки. Когда мой код запускается, я получаю следующую трассировку стека:

java.lang.NullPointerException: null
    в org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator.buildInterpolator(AssemblyInterpolator.java:177)
    в org.apache.maven.plugin.assembly.interpolation.AssemblyExpressionEvaluator.(AssemblyExpressionEvaluator.java:44)
    в org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.mergeComponentsWithMainAssembly(DefaultAssemblyReader.java:470)
    в org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.readAssembly(DefaultAssemblyReader.java:390)
    в org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.addAssemblyFromDescriptor(DefaultAssemblyReader.java:328)
    в org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.readAssemblies(DefaultAssemblyReader.java:120)

Из того, что я могу сказать, это вызвано DefaultAssemblyReader не имеет доступа к проекту Maven по умолчанию для плагина. В моем mojo я объявил читателя проекта и сборки Maven следующим образом:

@Component (role=org.apache.maven.project.MavenProject.class, hint="default")
protected MavenProject project;

@Component(role=org.apache.maven.plugin.assembly.io.AssemblyReader.class, hint="default")
protected AssemblyReader defaultReader;

Класс AssemblyReader не имеет никакого установщика для установки проекта, и я не уверен, как я могу получить project вводится в defaultReader, Одним из решений, о котором я подумал, было бы расширение SingleAssemblyMojo и дайте ему установщик для проекта и передайте этот объект конфигурации читателю сборки, но это кажется чем-то вроде клуджа. Есть ли более элегантный / правильный способ?

0 ответов

Другие вопросы по тегам