【问题标题】:Maven NAR plugin + Spring boot in webapp, loading .nar artifact in TomcatMaven NAR 插件 + webapp 中的 Spring boot,在 Tomcat 中加载 .nar 工件
【发布时间】:2019-04-09 02:16:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java maven spring-boot tomcat maven-nar-plugin


    【解决方案1】:

    好的,所以我最终得到了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>
    

    但是,仍然存在需要处理重新部署的问题,所以如果你真的想这样做,这里有办法,但你可能不需要那么难。

    【讨论】:

      猜你喜欢
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 2023-03-13
      • 2015-08-01
      • 2012-12-04
      • 2015-04-14
      • 1970-01-01
      相关资源
      最近更新 更多