将当前项目的目标/类/ *包含到maven插件执行类路径中,用于ASM的字节码指令

时间:2013-11-16 14:14:10

标签: java maven classpath maven-plugin

我正在尝试编写一个maven插件,当添加到项目中时,将检测此项目的类字节码。我面临的问题是,ASM(用于JVM字节码操作的工具)试图加载它正在加载的类,因为某些原因,ASM jar的类加载器缺少这些类,因为它们是在我的maven插件前几秒编译的在当前项目的target / classes目录中执行和liying。

如何将当前项目的目标/ classes目录附加到maven插件执行类路径?

1 个答案:

答案 0 :(得分:2)

由于 Maven 3 插件类加载器更加孤立。它只包含插件依赖项。 不包含当前项目依赖项或构建输出。关于此事的官方文件See here

您必须创建一个包含所需内容的类加载器。 Maven API提供了几种获取所需内容的方法,see for instance some examples in that SO thread)。 你肯定也可以从maven-exec-plugin的最新版本中获得很好的例子,这显然必须处理这个问题。