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