2017-04-08 90 views
0

我有一個自定義插件,可以加載類,例如Maven mojo插件從宿主項目加載類

Class<?> clazz = Class.forName(NAME_OF_CLASS_FROM_HOST_DEPENDENCIES); 

NAME_OF_CLASS_FROM_HOST_DEPENDENCIES - 是存在於項目,在使用這個插件的依賴的類。

主辦項目的pom

,我把插件是這樣的:

<plugin> 
    <groupId>com.plugins</groupId> 
    <artifactId>the_plugin</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <executions>    
    <execution> 
     <id>do</id> 
     <phase>process-classes</phase> 
      <goals> 
      <goal>do</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

獲取ClassNotFoundException的

是很重要的,這些依賴於POM定義爲

<scope>provided</scope> 

回答

0

結束了下面。

List<URL> listUrl = new ArrayList<URL>(); 

Set<Artifact> deps = project.getDependencyArtifacts(); 
for (Artifact artifact : deps) { 
final URL url = artifact.getFile().toURI().toURL(); 
listUrl.add(url);      
} 

newClassLoader = new URLClassLoader(listUrl.toArray(new URL[listUrl.size()]), Thread.currentThread().getContextClassLoader()); 
相關問題