私は Maven プラグインを開発しており、Assembly 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 プロジェクトにアクセスできないことが原因です。私のモジョでは、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;
project
AssemblyReader クラスには、プロジェクトを設定するためのセッターがありませんdefaultReader
。私が考えた 1 つの解決策は、拡張SingleAssemblyMojo
してプロジェクトのセッターを与え、その構成オブジェクトをアセンブリ リーダーに渡すことですが、それは少し面倒に思えます。よりエレガントで適切な方法はありますか?