簡體   English   中英

Maven mojo插件從托管項目加載類

[英]Maven mojo plugin to load class from hosting project

我有一個加載類的自定義插件,例如

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>

結束以下。

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM