使用maven 3,如何在插件中使用项目类路径?

时间:2016-03-06 17:03:49

标签: maven classpath maven-plugin

我正在写一个maven 3插件,我想使用项目类路径。

我已尝试使用Add maven-build-classpath to plugin execution classpath中提到的方法,但似乎maven找不到书面组件。 (我在插件执行开始时有ComponentNotFoundException。)

那么,什么是"参考"在maven 3插件中使用项目类路径的方法?或者,如果组件方式是正确的,那么除了将组件添加为configurator注释的@Mojo属性之外,是否还有任何配置步骤?

2 个答案:

答案 0 :(得分:5)

您可以通过调用:

来检索MavenProject上的类路径元素

示例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