1

我正在开发一个 Maven 插件,并使用 Assembly API 来做一些自定义的程序集构造。当我的代码运行时,我得到这个堆栈跟踪:

java.lang.NullPointerException:空
    在 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并为项目提供一个设置器,并将配置对象传递给程序集阅读器,但这似乎有点杂乱无章。有没有更优雅/正确的方法?

4

0 回答 0