我正在编写Spring Boot应用程序。 这个应用程序通过MessageQueues与主框架对话如何修改spring boot jar中的属性文件
因此,为了与该MainFrame对话,我们提供了一个java jar(它具有与MessageQueues对话的代码)。让我们称之为代理jar。
我们必须使用从上面提到的代理jar写的操作。 我们不写任何代码在我们的应用程序中读/写MessageQueues(IBM MessageQueues),这是通过代理jar及其相关的运行时jar完成的。
所以问题来了,这个代理jar被编码的方式是它在类路径中查找一个名为'commcfg.properties'的文件(期望名称完全相同)。实际上,Proxy jar使用另一个依赖jar(允许调用运行时jar),它从commcfg.properties读取队列详细信息,并从Message Queues读取/写入。
commcfg.properties具有MessageQueue的值和这些队列的主机和端口。总之队列细节。
所以问题在于这些MessageQueue的细节在不同的环境中会有所不同。我需要根据环境使用commcfg.properties
到目前为止我的试验来解决这个问题。
可以说我有两种环境。 因此,我将有两个不同的组commcfg.properties值的
我已经创建的文件如下 commcfg.DEV.properties commcfg.PROD.properties,这样他们将在classpath中
接下来,我有书面代码,它将根据环境挑选特定的 文件并将其重命名为commcfg.properties(因为代理jar和其辅助程序相关的运行时jar需要确切名称为 commcfg.properties)。
在我的本地工作空间中,我可以做到这一点。 但是,当部署(我们使用码头),被包装到弹簧引导罐。
所以我的破解不起作用,因为我们不能用罐子重命名文件。
另一种认为我有:
之前,我打电话给我的功能的代码,我会把commcfg.properties在 类路径(项目/ src目录/主/资源) 我会读它,修改值根据需要每个环境。 我将它们放在application.properties中。 但我再次怀疑在jar中我无法修改该文件。
希望我很清楚 请帮助我..
如果我正确理解了你的话:除了一个特定的属性文件(你不能使用Spring方法来使用Environment/class属性来配置你的应用程序),你不能使用其他任何东西吗?在这种情况下,唯一的解决办法是在你的类路径中提供你的commcfg.properties文件,但在你的jar之外(例如放置jar的根目录中的某处)。然后,您将此根目录添加到您的类路径中,以便您可以轻松修改它。 –
只需添加@MikeWojtyna所说的,在这种情况下的一些常见方法是1.使用具有不同环境属性的Spring云配置服务器。 2.将属性文件放在jenkins中,并让jenkins在构建期间选择相应的文件 – pvpkiran
谢谢@mike 和Kiran 您能否请指教如果我可以在Maven构建阶段对其进行调整? –