我正在写一个maven 3插件,我想使用项目类路径。
我已尝试使用Add maven-build-classpath to plugin execution classpath中提到的方法,但似乎maven找不到书面组件。 (我在插件执行开始时有ComponentNotFoundException
。)
那么,什么是"参考"在maven 3插件中使用项目类路径的方法?或者,如果组件方式是正确的,那么除了将组件添加为configurator
注释的@Mojo
属性之外,是否还有任何配置步骤?
答案 0 :(得分:5)
您可以通过调用:
来检索MavenProject
上的类路径元素
getCompileClasspathElements()
检索由编译范围的依赖项构成的类路径getRuntimeClasspathElements()
检索由运行时范围的依赖项(即编译+运行时)形成的类路径getTestClasspathElements()
检索由测试范围依赖项形成的类路径(即编译+系统+提供+运行时+测试)示例MOJO将是:
@Mojo(name = "foo", requiresDependencyResolution = ResolutionScope.TEST)
public class MyMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
public void execute() throws MojoExecutionException, MojoFailureException {
try {
getLog().info(project.getCompileClasspathElements().toString());
getLog().info(project.getRuntimeClasspathElements().toString());
getLog().info(project.getTestClasspathElements().toString());
} catch (DependencyResolutionRequiredException e) {
throw new MojoExecutionException("Error while determining the classpath elements", e);
}
}
}
是什么让这项工作:
MavenProject
属性@Parameter
注入${project}
注释
requiresDependencyResolution
将允许插件使用上述解决范围访问项目的依赖项。答案 1 :(得分:0)
有时看一下完全相同的插件代码会更好地解释它。如果有一个插件需要知道类路径,则它是maven-compiler-plugin(source)。只需查看classpathElements
。