java - 将当前项目的 target/classes/* 包含到 Maven 插件执行类路径中,以便使用 ASM 进行字节码检测

标签 java maven classpath maven-plugin

我正在尝试编写一个 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/

相关文章:

java - 两个不同 Java 版本的两种实现

java - 为 jar 和类设置类路径

classpath - 为什么在进行 gradle 运行时类路径中缺少 lwjgl?

java - 如何从 java 类路径中排除特定的 jar

java - 泛型与数组

java - 如何在 java 枚举中搜索?

java - 如何从二维对象数组中获取数据?

java - 在 IntelliJ IDEA 2016.1 中找不到创建新 Maven 项目的选项

java - CheckStyle EmptyBlock 规则不起作用

java - 如何按特定顺序运行 Maven 测试?