gpt4 book ai didi

java - 使用 Spring Boot 2 的 PropertiesLauncher(并运行 WAR 存档)

转载 作者:行者123 更新时间:2023-11-30 06:01:26 25 4
gpt4 key购买 nike

我正在创建一个基于 tomcat/jsp 的 WAR spring boot 2.0.4 可执行文件,当仅使用 bootWar gradle 目标时,该可执行文件运行得很好。但现在我想加载本地外部 JAR,而 WarLauncher 不支持这一点(有原因吗?)。所以我通过以下方式切换到 PropertiesLauncher:

bootWar {
enabled = true
manifest {
attributes 'Main-Class': 'org.springframework.boot.loader.PropertiesLauncher'
}
}

现在查看生成的 war 文件, list 中的一切看起来都正常,如下所示:

Start-Class: com.mypackage.Application
Main-Class: org.springframework.boot.loader.PropertiesLauncher

现在我试图找出正确的命令行参数来启动这件事,这需要一些尝试和错误,但这让我接近终点线:

java -Dloader.path=WEB-INF/lib-provided,WEB-INF/lib,WEB-INF/classes -jar myapplication-4.0.0.war

所以我基本上查看了 WarLauncher 并尝试通过 loader.path 值重新创建类路径,而不添加第 3 方 jar,因为首先我只想启动我的应用程序。

我的应用程序的加载看起来正常。

现在我想添加我的第 3 方 jar 所在的“本地”路径。我想我可以这样做:

java -Dloader.path=WEB-INF/lib-provided,WEB-INF/lib,WEB-INF/classes,jar:file:lib -jar myapplication-4.0.0.war

因此添加一个 jar:file:lib ,这应该意味着我的可运行 WAR 旁边的“lib”文件夹。但这是行不通的。另外,仅将“,lib”添加到 loader.path 是行不通的。

唯一有效的是添加完整路径,如“jar:file:/foo/bar/lib”,但我真的希望它相对于当前可运行的 WAR 文件夹。

有人可以告诉我如何定义扫描 Jars 的相对本地文件夹吗?

我希望我能帮助其他人将 PropertiesLauncher 与可运行的 WAR 文件结合使用,因为它并不是很简单,而且除了 https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html

最佳答案

回答我自己的问题,但这可能会有所帮助,因为官方文档不太好。

如果您想包含定义的 JAR 文件,您可以使用:

-Dloader.path=file:/myfolder/my.jar

如果你想包含一个具有多个 jar 的完整导演,你可以这样做:

-Dloader.path=file:/myfolder/

(您可以简单地使用 file:myfolder 使文件夹与 WAR 相关)

其他变体,例如从 JAR 内部读取,可以通过阅读以下代码来获取 https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/PropertiesLauncher.java

真正有帮助的是调试标志:

-Dloader.path=file:/myfolder/ -Dloader.debug=true

您将获得有关 PropertiesLauncher 的类加载问题的 system.outs。

我真的很想看到一个 -Dloader.schema=war 标志,它采用 WAR 布局而不是 JAR 布局。这样一来,人们只需要添加自己的路径,而不是 WAR 中所需的文件夹。

关于java - 使用 Spring Boot 2 的 PropertiesLauncher(并运行 WAR 存档),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52218808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com