我制作了一个Maven插件,用于验证和实例化项目中的类。 Maven插件何时在类路径中包含项目中的类?
插入不断抛出ClassNotFoundException。
在查看Maven文档并进行搜索后询问问题。
非常感谢任何帮助。谢谢!
答案 0 :(得分:5)
Maven插件何时在类路径中包含项目中的类?
简短的回答是默认情况下没有。
具体做法是:
请注意,插件类加载器既不包含当前项目的依赖项,也不包含其构建输出。相反,插件可以从MavenProject查询项目的编译,运行时和测试类路径,并结合Mojo API规范中的mojo注释requiresDependencyResolution。
如果您缺少来自众所周知的工件的类,则可以将该工件添加为项目依赖项。
答案 1 :(得分:1)
好的,我可以通过将输出目录添加到插件的ClassRealm来修改类加载。这对我来说仍然很奇怪,但它确实有效。
final PluginDescriptor pluginDescriptor = (PluginDescriptor) getPluginContext().get("pluginDescriptor");
final ClassRealm classRealm = pluginDescriptor.getClassRealm();
final File classes = new File(getProject().getBuild().getOutputDirectory());
try
{
classRealm.addURL(classes.toURI().toURL());
}
catch (MalformedURLException e)
{
e.printStackTrace();
}