gpt4 book ai didi

java - 设置Spring Boot可执行jar的工作目录

转载 作者:行者123 更新时间:2023-12-01 16:19:00 26 4
gpt4 key购买 nike

是否可以为 Spring Boot 可执行 jar 设置工作目录?

例如,当使用相对路径配置属性 logging.file.pathspring.pid.file 时,它将相对于 jar 的位置。

这种可能性派上用场的原因是 jar 被放置在如下目录结构中:

my-app/
├── config
│   └── application.properties
├── lib
│   └── my-app.jar
├── log
│   └── my-app.log
├── pid
│   └── application.pid
└── var

最好在 /apps/my-app 配置工作目录并设置 logging.file.path=log 以便将日志文件写入 /apps/my-app/log

应用程序作为 systemd 服务启动。该文件如下所示。

[Unit]
Description=my-app
After=network.target consul.service

[Service]
Type=simple
User=app-user
Environment=JAVA_OPTS='-Xmx64M'
ExecStart=/apps/my-app/lib/my-app.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

尝试在 systemd 服务文件中设置工作目录:

WorkingDirectory=/apps/my-app

这没有帮助。

最佳答案

如果将 -jar 选项与 fat jar 结合使用,设置 WorkingDirectory 确实有效。

所以我现在的解决方案是这样的:

[Unit]
Description=my-app
After=network.target consul.service

[Service]
Type=simple
User=app-user
Environment="JAVA_OPTS=-Xmx64M"
WorkingDirectory=/apps/my-app
ExecStart=java $JAVA_OPTS -jar lib/my-app.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

关于java - 设置Spring Boot可执行jar的工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62319597/

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