2016-03-06 48 views
2

我在寫一個maven 3插件,爲此我想使用project classpath。使用maven 3,如何在插件中使用項目類路徑?

我試過使用Add maven-build-classpath to plugin execution classpath中提到的方法,但似乎書寫的組件未被maven發現。 (我在插件執行開始時有一個ComponentNotFoundException)。

那麼,在maven 3插件中使用項目類路徑的「參考」方式是什麼?或者,如果組件方式是正確的,那麼除了將該組件添加爲configurator註釋的屬性之外,是否還有任何配置步驟?

回答

4

您可以通過調用檢索有關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被注射使用${project}財產
  • requiresDependencyResolution將啓用該插件訪問的@Parameter註釋項目與提及的決議範圍的依賴關係。
+0

requiresDependencyResolution無效。項目具有zip依賴性。 –

0

有時候看看插件的代碼完全相同,這說明它好得多。如果有一個需要知道類路徑的插件,它就是maven-compiler-plugin(source)。只需查找classpathElements

相關問題