Spring 启动 war 打包:使用额外的类路径执行

Spring Boot war packaging: Execution with additional classpath

我想将我的 Spring 引导应用程序打包为 war 包,以便

与神器相同。为此,我将 spring-boot-starter-tomcat 的范围设置为 provided,因此这些依赖项位于文件夹 lib-provided.

我不想在工件中包含数据库驱动程序。当 运行 在现有 tomcat 上时,我只是将数据库驱动程序(作为 jar)添加到它的 lib 文件夹中。

现在我的问题是:如何将额外的类路径(例如 lib/*)添加到 java -jar application.war 命令?传统方法(如 java -cp lib/* -jar application.war)不起作用。

发现 Spring Boot 使用 WarLauncher 来 运行 可执行 war 文件。所以

 java -cp drivers/*:application.war org.springframework.boot.loader.WarLauncher

是一个有效的命令行命令,可以在不修改或解压缩 war 文件的情况下将其他 jar 文件添加到类路径。