我正在尝试编写一个 Maven 插件,当添加到项目中时,它将检测该项目的类字节码。我面临的问题是,ASM(JVM 字节码操作工具)出于某种原因尝试类加载它正在检测的类,而 ASM jar 的类加载器缺少这些类,因为它们是在我的 Maven 插件之前几秒钟编译的执行并位于当前项目的 target/classes 目录中。
如何将当前项目的 target/classes 目录附加到 Maven 插件执行类路径?
最佳答案
自Maven 3以来,插件类加载器更加隔离。它仅包含插件依赖项。 它不包含当前项目依赖项或构建输出。 See here有关于此的官方文档。
您必须创建一个包含您需要的类加载器。 Maven API 提供了多种方式来获取您所需要的内容,see for instance some examples in that SO thread )。 您当然也可以从 maven-exec-plugin 的最新版本中获得很好的示例。 ,显然必须处理这个问题。
关于java - 将当前项目的 target/classes/* 包含到 Maven 插件执行类路径中,以便使用 ASM 进行字节码检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019443/