Maven插件何时可以访问项目类?

时间:2014-01-21 22:03:35

标签: java maven maven-plugin

我制作了一个Maven插件,用于验证和实例化项目中的类。 Maven插件何时在类路径中包含项目中的类?

插入不断抛出ClassNotFoundException。

在查看Maven文档并进行搜索后询问问题。

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:5)

  

Maven插件何时在类路径中包含项目中的类?

简短的回答是默认情况下没有。

查看Guide to Maven Classloading

具体做法是:

  

请注意,插件类加载器既不包含当前项目的依赖项,也不包含其构建输出。相反,插件可以从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();
}