Java maven-spring项目构建概要
我很难理解maven构建概要文件 基本上,我的配置文件目录结构如下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
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")