在maven插件中是加载不到目标项目的类及目标项目引用的第三方所提供的类的,需要通过动态读取目标项目所依赖的classpath并根据这些classpath生成相应的url数组,以这个url数组作为参数得到的类加载器可以实现在maven插件中动态加载目标项目类及第三方引用包的目的。
如何获得相应的classpath?
@Parameter(defaultValue = "${project}", readonly = true)
private MavenProject project;
在mojo类中引入MavenProject参数,这个参数是目标项目的抽象,仅仅引入这个参数不需要多余的操作即可。
接下来在mojo的execute()方法中,调用project的getCompileClasspathElements()方法即可得到该string数组。
将该数组中的字符串依次转换成URL数组,即可作为自定义的类加载器的构造方法中的参数,该类加载器可以达到实现在maven插件中动态加载目标项目类及第三方引用包的目的。