【发布时间】:2018-04-09 16:39:25
【问题描述】:
我正在制作一个在测试阶段运行的 maven 插件,在使用我的插件的项目的 pom.xml 配置中,我正在设置一个类规范名称,我想用它来从我的插件运行该类,基本上,我正在设法从我的插件中动态加载项目内的类。
Class clazz = Class.forName("... class from pom.xml ...")
当我运行它时,我收到了预期的“ClassNotFoundException”,似乎类加载器不一样或不共享。
有办法吗?就像从项目中捕获类加载器或通过依赖注入到我的插件中接收它?最好的方法是什么?
【问题讨论】:
-
您尝试加载的类是否在插件中定义?如果没有,您是否在 pom 的
<plugin>定义中添加了包含此类的 lib<dependency>? -
@Antot 我已将
<dependency>包含在项目的 pom 中,也包含在<build>中以供使用。但是在执行期间,我想从 maven 插件加载(或实际运行它)。 -
能否分享一下项目和插件中
pom.xml的摘录? -
我有类似的要求,我使用了这个解决方案。在我的 mojo 中复制上面的 getClassLoader() 方法,注入 MavenProject 并使用 pom.xml 中定义的类名调用 getClassLoader()。它仍然不适合我。我得到 ClassNotFoundException。知道可能是什么问题吗?
标签: java maven plugins classpath classloader