我正在尝试使用两个不同的DBMS创建Maven配置文件。 DBMS配置存储在Maven配置文件中。 Web App从src / main / resources中的文件connection.properties获取设置。在src / test / resources中也有一个具有相同标题connection.properties的类似文件,并且该文件仅应在测试lyfecycle maven期间上载。然后,spring core使用connection.properties中指定的DBMS连接设置。
我在运行Maven配置文件时遇到问题,该配置文件在运行测试生命周期Maven时会覆盖测试目录中src / main / resources / connection.properties上的src / test / resources / connection.properties之类的资源。
<profile>
<id>profile-postgres</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<database.driver_class_name>org.postgresql.Driver</database.driver_class_name>
<database.url>jdbc:postgresql://127.0.0.1:5432/bulls_and_cows</database.url>
<database.username>postgres</database.username>
<database.password>postgres</database.password>
<jpa.show_sql>true</jpa.show_sql>
<jpa.generate_ddl>true</jpa.generate_ddl>
<jpa.database>POSTGRESQL</jpa.database>
<jpa.database_platform>org.hibernate.dialect.PostgreSQL95Dialect</jpa.database_platform>
<jpa.hibernate.hbm2ddl.auto>validate</jpa.hibernate.hbm2ddl.auto>
<jpa.hibernate.format_sql>false</jpa.hibernate.format_sql>
<h2.scope>test</h2.scope>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.1</version>
</dependency>
</dependencies>
</properties>
</profile>
<profile>
<id>profile-h2</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<database.driver_class_name>org.h2.Driver</database.driver_class_name>
<database.url>jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1</database.url>
<database.username>sa</database.username>
<database.password>sa</database.password>
<jpa.show_sql>true</jpa.show_sql>
<jpa.generate_ddl>true</jpa.generate_ddl>
<jpa.database>H2</jpa.database>
<jpa.database_platform>org.hibernate.dialect.H2Dialect</jpa.database_platform>
<jpa.hibernate.hbm2ddl.auto>create-drop</jpa.hibernate.hbm2ddl.auto>
<jpa.hibernate.format_sql>false</jpa.hibernate.format_sql>
<h2.scope>compile</h2.scope>
</properties>
</profile>
</profiles>
此配置文件从src / main / resources上的src / test / resources覆盖了我的connection.properties。
src / test / resources中的connection.properties
database.driver_class_name=org.h2.Driver
database.url=jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1
database.username=sa
database.password=sa
src / main / resources中的connection.properties
database.driver_class_name=${database.driver_class_name}
database.url=${database.url}
database.username=${database.username}
database.password=${database.password}
我在root pom文件的build标签和个人档案标签的build标签中写了testResources标签,例如
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
但是src / main / resources中的connection.properties始终用于maven的测试生命周期。
我以前的失败版本使用了https://travis-ci.org/WeDism/BullsAndCows/builds/449051809中的配置文件。
我在主分支机构https://github.com/WeDism/BullsAndCows/blob/master/pom.xml上的仓库。
我的with_profiles_h2_postgres分支https://github.com/WeDism/BullsAndCows/blob/with_profiles_h2_postgres/pom.xml的回购
个人资料profile-postgres应该是主要的,例如activeByDefault = true
答案 0 :(得分:0)
为解决此问题,我更改了属性名称,例如
<database.driver_class_name>
至<database.driver_class_name.pom>
。