Java Spring Boot Maven插件和RequireUpack目标目录

Java Spring Boot Maven插件和RequireUpack目标目录,java,spring,maven,spring-boot,spring-boot-maven-plugin,Java,Spring,Maven,Spring Boot,Spring Boot Maven Plugin,我有一个案例,需要使用以下工具打开库: 否则,项目中的其他库将无法正常工作。如链接中所述,所选库将解压缩并复制到临时目录。如果我想让应用程序运行得比临时文件过期时间更长,那么将库解压到临时目录不是一个好主意。文件将被删除,应用程序将停止正常工作 有没有办法指定不同的目标目录 为什么临时位置是应用程序库的好位置 到目前为止,我能够通过覆盖TMP和TEMP环境变量来更改位置目标位置,但从长远来看,这听起来是个糟糕的主意 请在此提供帮助。此问题不仅仅限于“Requiresupack”,这是spr

我有一个案例,需要使用以下工具打开库:

否则,项目中的其他库将无法正常工作。如链接中所述,所选库将解压缩并复制到临时目录。如果我想让应用程序运行得比临时文件过期时间更长,那么将库解压到临时目录不是一个好主意。文件将被删除,应用程序将停止正常工作

  • 有没有办法指定不同的目标目录
  • 为什么临时位置是应用程序库的好位置
到目前为止,我能够通过覆盖TMPTEMP环境变量来更改位置目标位置,但从长远来看,这听起来是个糟糕的主意


请在此提供帮助。

此问题不仅仅限于“Requiresupack”,这是spring boot/tomcat处理其临时文件的方式。因此,在其他方面也可能会让你感到惊讶

存在一个描述该行为的问题:

解决办法:

  • 使用
    server.tomcat.basedir
    定义tomcat基本目录。如果未指定,则使用临时目录
  • 使用
    -Djava.io.tmpdir=/var/tmp
    以不同的临时目录启动应用程序

另一个解决方案是不要打开您的库。不要将其存储在fat jar中,而是将其存储在类路径上的某个位置。

您是否尝试过outputDirectory,库的哪些方面导致您将其解包?考虑到spring boot是按约定实现的,并且这一步骤超出了约定,我个人的解决方案是找出一个不需要解包库的解决方案。outputDirectory用于目标jar文件的位置,而不是在运行时解包库的位置@Kieveli此功能由spring boot支持,完全适用于我需要使用的情况;不幸的是,我处理的是我无法更改的专有库,我仍然很好奇需要解包的原因——但如果您不想共享,那没关系。我的spring boot作为Tomcat实例运行。对于tomcat,它经常使用临时空间来运行web应用程序。这并不意味着临时文件夹将被任意删除。您是否遇到过在web服务运行时已删除解包库的问题?我无法分享有关库的详细信息(机密性),但它需要解包才能正常工作。是的,我在生产环境中遇到了这个问题,当时应用程序突然停止工作(10天后),ClassNotFound-like异常。我将使用
-Djava.io.tmpdir=[location]
,也许将来会有一种方法以其他方式配置它: