如何在复杂项目中包含属性文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在复杂项目中包含属性文件相关的知识,希望对你有一定的参考价值。

我有一个名为sample-parent的后端项目,它由三个不同的项目组成

structure

其中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 项目文件夹名称

如何在chef recipe中包含application.properties文件中的属性

如何在我的 ujson 转储中包含私有属性?

如何在Android主项目中包含库项目中使用的aar文件

如何在C ++应用程序中包含EXTERNAL PCH文件?

如何在 Android NDK 项目中包含二进制文件?