【问题标题】: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 的类。
我在这里有什么选择?我认为有可能
- 以某种方式更改
spring-boot:repackage 上的工件扩展?
- 将此自定义工件添加到类加载器存储库?
哪个更好,我将如何实施?
【问题讨论】:
标签:
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>
但是,仍然存在需要处理重新部署的问题,所以如果你真的想这样做,这里有办法,但你可能不需要那么难。