Плагин Maven NAR + весенняя загрузка в веб-приложении, загрузка артефакта .nar в Tomcat - PullRequest
0 голосов
/ 05 ноября 2018

Мне удалось добавить зависимости платформы к war и сгенерировать maven-nar-plugin jni артефакт в WEB-INF/lib/.

Но проблема в том, что добавленный артефакт имеет расширение .nar, в то время как WebappClassLoaderBase добавляет только .jar s во внутренние репозитории классов, поэтому мой мост jni не загружен и класс недоступен, что приводит к ClassNotFoundException.

Какие у меня есть варианты? Я предполагаю, что возможно

  1. как-то изменить расширение артефакта на spring-boot:repackage?
  2. добавить этот пользовательский артефакт в репозитории classloader?

Что было бы лучше, и как бы я это реализовал?

1 Ответ

0 голосов
/ 23 ноября 2018

Хорошо, так что я получил 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>

Но, тем не менее, есть проблема с передислокациями, с которыми нужно иметь дело, поэтому, если вы действительно хотите это сделать, вот способ, но вам, вероятно, это не нужно так сильно.

...