web-dev-qa-db-ja.com

Spring Bootで追加のクラスパスを構成する方法は?

スタンドアロンのWebアプリケーションを作成したい。 SpringBootに問題があります。

私のアプリケーションは、SpringBootからの1つのjarファイルです。

しかし、私のアプリケーションには通常、jdbcドライバーjarが必要でした。アプリケーションのjdbcドライバーjarを除外したい。ライブラリjarをlibフォルダーから読み取りたい。

ただし、SpringBoot libフォルダーはBOOT-INF/libfinal static

したがって、jdbcドライバーjarの外部クラスパス(lib)を追加します。

SpringBootで追加のクラスパスを構成する方法。利用可能ですか?

12
fightingmamoru

以下のリンクをスプリングブートから参照できます。

https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-property-launcher-features

Loader.pathプロパティを使用して、libフォルダーの場所を定義できます

8
mhasan

Loader.pathパラメーターを使用して、外部libフォルダーの場所を定義できます。このフォルダーの下のすべてのjarがクラスパスに追加されます。たとえば、C:\ extLibを外部libフォルダーとして定義する場合は、次を実行できます。

Java -Dloader.path=/C:/extLib/ -jar aapName.jar

これが機能するには、PropertiesLauncherを使用する必要があります。それを行うには2つの方法があります。

オプション1

プロジェクトpom.xmlを更新し、次のタグを追加します。

<configuration>  <!-- added -->
  <layout>Zip</layout> <!-- to use PropertiesLauncher -->
</configuration

効果的なビルドタグ、更新後は以下のようになります。

<build> 
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>  <!-- added -->
                <layout>Zip</layout> <!-- to use PropertiesLauncher -->
            </configuration>
        </plugin>
    </plugins>
</build>

オプション2

コマンドラインからアプリケーションを起動するときに、PropertiesLauncherを使用します。

Java -cp aapName.jar -Dloader.path=/C:/extLib/ org.springframework.boot.loader.PropertiesLauncher

参照: https://mash213.wordpress.com/2017/01/05/hack-how-2-add-jars-2-springboot-classpath-with-jarlauncher/

4
giftednewbie