在开始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);
编辑:每个注释更新。
考虑执行以下操作:
- 在每个主机上存储每个主机的JNDI文件。
- 将JNDI文件(在主机上(的路径存储在配置属性中。
- 在每台计算机上配置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
。这个问题可能会有所帮助。