如何从Spring-Boot Jar Boot-Inf lib文件夹中提取文件



在开始Spring-Boot应用程序时,如何提取用spring-boot jar打包的*.zip文件。我希望它们提取的原因是因为这些依赖关系*.zip包含特定环境的本机文件(window的.dll和.so for linux(。

我想我可以使用https://docs.spring.io/spring-boot/docs/1.4.x/reference/htmlsingle/#howto-extract-extract-scract-specific-libraries-libraries-libraries-when-an-an-an-executable-executable-executable-executable-jar-runs

如何将该温度位置设置为java.libarary.path,或者我可以配置该路径。

问题有两个典型的解决方案"我如何获取环境特定的配置文件?"。

解决方案1:使用一个包含每个环境设置的属性文件。使用特定环境的属性后缀。这是一个示例:

    dev.port=123456
    ist.port=98745
    prod.prot=90458

基于应用程序运行的环境,它将选择其中之一端口值。

解决方案2:Spring-Boot允许您为应用程序属性配置覆盖文件。一种方法是设置" spring.config.location"在调用之前的价值 springApplication.run方法。这是一个示例(在不滚动的情况下包装长字符串(:

springApplicationBuilder.properties(
    "spring.config.location=classpath:/default.properties," +
    "/local/path/on/deploy/host/config/overrides.properties");
springApplication = springApplicationBuilder.build();
springApplication.run(argumentArray);

编辑:每个注释更新。

考虑执行以下操作:

  1. 在每个主机上存储每个主机的JNDI文件。
  2. 将JNDI文件(在主机上(的路径存储在配置属性中。
  3. 在每台计算机上配置JNDI文件路径(通过使用覆盖文件或使用环境变量(。

是不可能知道在运行时打开邮政编码的何处,这意味着您无法提前设置java.library.path

我建议将.dll.so文件保留在您的项目中,而不要将它们包装在zip文件中。这样,您就有一个恒定路径在设置库路径时可以参考。

我会避免将它们直接放置在resources目录中,而是将它们放置在可以放置的单独目录中。这只是个人喜好;我相信,如果您将本机文件放在其中,它将起作用,我相信您需要在这种情况下设置java.library.path=resources(尚未测试(。

例如,我们使用Docker部署了带有本机依赖关系的Spring Boot应用程序,并且只需将.so文件安装为/native容器中可用的Docker卷即可。然后,我们将JVM ARG设置为包括-Djava.library.path=/native

请注意,您可能还需要为Linux设置LD_LIBRARY_PATH。这个问题可能会有所帮助。

最新更新