Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在复杂项目中包含属性文件_Java_Spring_Maven - Fatal编程技术网

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

Java 如何在复杂项目中包含属性文件,java,spring,maven,Java,Spring,Maven,我有一个名为sample parent的后端项目,它由三个不同的项目组成 其中,示例Web服务是一个具有主类的Web服务后端。属性文件包含以下信息: server.port = 8080 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=sample server.servlet.context-path=/sample 但当我运行该项目时,该文件被忽略

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

其中,
示例Web服务
是一个具有主类的Web服务<代码>后端。属性文件包含以下信息:

server.port = 8080
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=sample
server.servlet.context-path=/sample

但当我运行该项目时,该文件被忽略,因此我无法连接到mongo数据库。据我所知,我必须在
pom.xml
文件中标记
backend.properties
文件,但我不知道如何做,我试图找到一些指导原则,但到目前为止我什么都没有。任何帮助都将不胜感激。

将该文件放入需要连接到MongoDB的子项目的
src/main/resources

在pom.xml中指定如下资源目录

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <targetPath>${project.build.outputDirectory}</targetPath>
            <filtering>true</filtering>
        </resource>
   </resources>
</build>

${project.basedir}/src/main/resources
${project.build.outputDirectory}
真的

Michal,从我所看到的情况来看,您的问题是您试图在不需要属性值的地方加载属性值。通常,您最好将属性文件放在每个项目中,但只定义项目真正关心的值-在这里,您的webservice应用程序不关心MongoDB(或不应该关心)连接,因此您最好将连接放在MongoDB中,并从webservice中删除这些值

无论如何,如果您需要集中属性,我强烈建议您在JAR/WAR之外使用属性文件,特别是在存在密码、api密钥、连接等敏感信息的情况下。为了做到这一点,您可以使用类似于此Bean的配置(仅用于演示,不用于生产):

您还可以参考Spring文档,了解从不同来源加载属性的优先级:

从这个问题来看,它还不清楚-如何将此文件打包到build(pom.xml)中以及如何在runtimeWell中加载此文件,我不加载它,这就是问题所在,我不知道如何在main
pom.xml
文件中包含
backend.properties
属性无需重新声明默认值或使用筛选,不需要或不使用的地方
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
properties.setLocation(new FileSystemResource("/path/to/app-production.properties"));
properties.setIgnoreResourceNotFound(false);
return properties;}