Как включить библиотечную банку из lib в основную банку с maven

#java #maven #jar #compilation #dynamic-compilation

Вопрос:

Я хочу добавить банки из другой папки в мою основную банку во время выполнения, чтобы сделать основную банку легкой. Как это сделать? Я использую maven. Я думал о предоставленной области, но я не знаю, как добавить эти банки.

 ./lib/hikari.jar
./lib/h2.jar                        ./
===============                 =============
=             =                 =           =
=  Hikari.jar =                 =           =
=             =     --------->  =  Main.jar =
=  h2.jar     =                 =           =
=             =                 =           =
===============                 =============
 

Ответ №1:

Это зависит от того, как вы делаете банку.

Вы можете сделать следующее: используйте плагин maven-dependency-для копирования своих библиотек, а затем настройте плагин maven-jar для использования библиотек из пути к классу, не нужно изменять область зависимостей.

 <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.2.0</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <mainClass>your.main.Class</mainClass>
        <useUniqueVersions>false</useUniqueVersions>
      </manifest>
    </archive>
  </configuration>
</plugin>