Java maven-spring项目构建概要

Java maven-spring项目构建概要,java,spring,maven,Java,Spring,Maven,我很难理解maven构建概要文件 基本上,我的配置文件目录结构如下 src/main/resources/profiles/dev/database.properties src/main/resources/profiles/test/database.properties 我在pom.xml中有这个配置 <build> ... <filters> <filter>src/main/resour

我很难理解maven构建概要文件

基本上,我的配置文件目录结构如下

 src/main/resources/profiles/dev/database.properties

 src/main/resources/profiles/test/database.properties
我在pom.xml中有这个配置

      <build>
        ...
            <filters>


<filter>src/main/resources/profiles/${build.profile.id}/database.properties</filter>
            </filters>
            <resources>
                <resource>
                <filtering>true</filtering>
                <directory>src/main/resources/</directory>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <build.profile.id>test</build.profile.id>
            </properties>
        </profile>
    </profiles>
当我运行应用程序时,我将VM参数
-Dspring.profiles.active=test
放入profiles/test下,这样它将加载
数据库.properties
。然后我突然意识到,我不需要在pom.xml中添加配置就可以做到这一点。即使我不需要pom.xml中的配置,这仍然是构建概要文件的正确实现吗

更新:这是我的解决方案 现在我了解了maven概要文件的使用,我所做的是创建另一个层,该层将基于活动概要文件保存配置。Ben是对的,我混合了spring和maven的简介

我在参考资料下创建了另一个文件database.properties,内容如下:

db.driver=${db.driver}
db.url=${db.url}
db.username=${db.username}
db.password=${db.password}
现在,我的数据源配置只引用那个新层,而不知道激活了哪个概要文件,因为maven将在编译时解决这个问题

@Configuration
@PropertySource("classpath:database.properties")

这取决于您的目标是什么,您似乎将Maven配置文件与Spring配置文件混为一谈,它们是不同的概念。Maven配置文件用于在构建时导致不同的行为,而Spring配置文件用于在运行时导致不同的行为。如果您只是希望根据运行的配置文件加载不同的配置文件,那么有几种不同的可能性。如果您使用的是spring boot,那么您只需要在
src/main/resources
中有一个
application-.properties
文件,每个配置文件一个。如果您仅使用Spring MVC,您可能有两个
@配置类
,每个
@配置文件
一个,并且在每个配置中为活动配置文件配置
@PropertiesSource
和相应的
数据库.properties
文件。或者,您可以保持原样,通过SpEL中指定的目录路径加载文件。在任何情况下,您都不需要对Maven概要文件做任何事情,因为这些都只是运行时问题,src/main/resources下的所有内容默认情况下都将包含在生成的包中(war、ear、可执行jar等)。

这取决于您的目标是什么,似乎您将Maven配置文件与Spring配置文件混为一谈,它们是不同的概念。Maven配置文件用于在构建时导致不同的行为,而Spring配置文件用于在运行时导致不同的行为。如果您只是希望根据运行的配置文件加载不同的配置文件,那么有几种不同的可能性。如果您使用的是spring boot,那么您只需要在
src/main/resources
中有一个
application-.properties
文件,每个配置文件一个。如果您仅使用Spring MVC,您可能有两个
@配置类
,每个
@配置文件
一个,并且在每个配置中为活动配置文件配置
@PropertiesSource
和相应的
数据库.properties
文件。或者,您可以保持原样,通过SpEL中指定的目录路径加载文件。在任何情况下,您都不需要对Maven概要文件执行任何操作,因为这些都只是运行时的问题,src/main/resources下的所有内容默认情况下都将包含在生成的包中(war、ear、可执行jar等)。

在任何情况下,您都不需要对Maven概要文件执行任何操作吗?我认为maven是用于构建时的?当我想为两个不同的数据库连接使用两个单独的db.properties文件时,您能建议我如何实现我的目标吗我只需要在application.properties文件中包含连接字符串信息,并且在
src/main/resources/application.properties
中对所有概要文件都有相同的配置,然后我将在
/src/main/resources/application-dev.properties
中设置特定于概要文件的数据库连接属性
src/main/resources/application test.properties
在任何情况下,您都不需要对Maven概要文件做任何操作吗?我认为maven是用于构建时的?当我想为两个不同的数据库连接使用两个单独的db.properties文件时,您能建议我如何实现我的目标吗我只需要在application.properties文件中包含连接字符串信息,并且在
src/main/resources/application.properties
中对所有概要文件都有相同的配置,然后我将在
/src/main/resources/application-dev.properties
中设置特定于概要文件的数据库连接属性
src/main/resources/application test.properties
@Configuration
@PropertySource("classpath:database.properties")