首页 > 解决方案 > Maven NAR 插件 + webapp 中的 Spring boot,在 Tomcat 中加载 .nar 工件

问题描述

我已经设法将平台依赖项添加到jni 工件war并由其生成到.maven-nar-pluginWEB-INF/lib/

但问题是:添加的工件具有.nar扩展名,而WebappClassLoaderBase仅将.jars 添加到其内部类存储库中,因此我的 jni 桥未加载并且类无法访问导致 ClassNotFoundException.

我在这里有什么选择?我认为有可能

  1. 以某种方式更改工件扩展spring-boot:repackage
  2. 将此自定义工件添加到类加载器存储库?

哪个会更好,我将如何实施?

标签: javamavenspring-boottomcatmaven-nar-plugin

解决方案


好的,所以我结束了maven-dependency-plugin

<build>
...
<plugins>
  <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-dependency-plugin</artifactId>
     <executions>
       <execution>
         <goals>
           <goal>copy</goal>
         </goals>
         <configuration>
           <artifactItems>
             <artifactItem>
               <groupId>${dep.groupId}</groupId>
               <artifactId>${dep.artifactId}</artifactId>
               <version>${dep.version}</version>
               <type>nar</type>
               <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
               <destFileName>${dep.artifactId}-${dep.version}.jar</destFileName>
             </artifactItem>
           </artifactItems>
         </configuration>
       </execution>
     </executions>
  </plugin>
  ...
</plugins>
</build>

但是,仍然存在要处理的重新部署问题,因此,如果您真的想这样做,这就是方法,但您可能不需要那么难。


推荐阅读