2013-04-27 3 views
0

J'ai développé un plugin maven, qui permet d'analyser des classes dans un module, de trouver des classes spécifiques et de faire quelque chose à leur propos.comment passer les classes de modules maven à un plugin maven

Le problème est que, lorsque j'utilise ce plugin dans un module maven, il n'est pas capable de trouver des classes dans ce module.

J'ai vérifié le plug-in et classpath il ne contient que classes de plug-ins et il est dépendances.

Est-il possible d'inclure automatiquement des classes de module dans le classpath du plugin?

+1

Cette réponse est-elle utile? http://stackoverflow.com/questions/2659048/add-maven-build-classpath-to-plugin-execution-classpath –

Répondre

2

Je pris cette approche et apparemment il travaille:

1 - un paramètre MavenProject est nécessaire au sein de votre classe Mojo:

@Parameter(defaultValue = "${project}", required = true, readonly = true) 
private MavenProject project; 

2 - et vous pouvez obtenir les éléments classpath de l'instance de projet:

try { 
    Set<URL> urls = new HashSet<>(); 
    List<String> elements = project.getTestClasspathElements(); 
            //getRuntimeClasspathElements() 
            //getCompileClasspathElements() 
            //getSystemClasspathElements() 
    for (String element : elements) { 
     urls.add(new File(element).toURI().toURL()); 
    } 

    ClassLoader contextClassLoader = URLClassLoader.newInstance(
      urls.toArray(new URL[0]), 
      Thread.currentThread().getContextClassLoader()); 

    Thread.currentThread().setContextClassLoader(contextClassLoader); 

} catch (DependencyResolutionRequiredException e) { 
    throw new RuntimeException(e); 
} catch (MalformedURLException e) { 
    throw new RuntimeException(e); 
}