如何在复杂项目中包含属性文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在复杂项目中包含属性文件相关的知识,希望对你有一定的参考价值。
我有一个名为sample-parent
的后端项目,它由三个不同的项目组成
其中sample-webservice
是主类。 backend.properties
文件包含以下信息:
server.port = 8080
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=sample
server.servlet.context-path=/sample
但是当我运行项目时,该文件将被忽略,因此我无法连接到mongo数据库。据我所知,我必须在backend.properties
文件中标记pom.xml
文件,但是我不知道该怎么做,我试图找到一些指导方针,但到目前为止我什么都没有。任何帮助,将不胜感激。
答案
将该文件放入需要连接到MongoDB的子项目的src/main/resources
中。
另一答案
Michal,据我所见,您的问题是您试图将不需要的属性的值加载到其中。通常,最好将属性文件放入每个项目,而仅定义项目真正关心的值-在这里,您的Web服务应用程序不关心MongoDB(或不关心)连接,因此最好将连接放入MongoDB中并从Webservice中删除这些值。
无论如何,如果您需要集中属性,我强烈建议您在JAR / WAR之外使用属性文件,尤其是在存在诸如密码,API密钥,连接之类的敏感信息的情况下。为此,您可以使用类似Bean的配置(仅用于演示,不用于生产):
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
properties.setLocation(new FileSystemResource("/path/to/app-production.properties"));
properties.setIgnoreResourceNotFound(false);
return properties;
也可以参考Spring文档中有关priority从不同来源加载属性的信息:externalizing props
另一答案
这样指定pom.xml中的资源目录。
<build>
<resources>
<resource>
<directory>$project.basedir/src/main/resources</directory>
<targetPath>$project.build.outputDirectory</targetPath>
<filtering>true</filtering>
</resource>
</resources>
</build>
以上是关于如何在复杂项目中包含属性文件的主要内容,如果未能解决你的问题,请参考以下文章
如何不在生成的命名空间中包含 Visual Studio 项目文件夹名称