профиль maven перезаписывает ресурсы теста - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать maven профили, которые бы использовали две разные СУБД. Конфиги СУБД хранятся в профилях maven. Веб-приложение получает настройки из файла connection.properties в src / main / resources. В src / test / resources есть также аналогичный файл с таким же названием connection.properties, и этот файл следует загружать только во время тестирования lyfecycle maven. Тогда Spring Core использует параметры подключения к СУБД, указанные в файле connection.properties.

У меня проблема с профилем maven, который перезаписывает ресурсы, такие как src / test / resources / connection.properties, в src / main / resources / connection.properties из каталога test, когда выполняется тестовый жизненный цикл maven.

<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>

Этот профиль перезаписывает мои свойства connection.properties из src / test / resources в src / main / resources.

connection.properties из src / test / resources

database.driver_class_name=org.h2.Driver
database.url=jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1
database.username=sa
database.password=sa

connection.properties из src / main / resources

database.driver_class_name=${database.driver_class_name}
database.url=${database.url}
database.username=${database.username}
database.password=${database.password}

Я написал тег testResources в теге сборки корневого файла pom и в теге сборки тега профиля, например

<testResources>
    <testResource>
        <directory>${project.basedir}/src/test/resources</directory>
        <filtering>true</filtering>
    </testResource>
</testResources>

Но вместо этого connection.properties из src / main / resources всегда использовались в тестовом жизненном цикле 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

Профиль профиля-postgres должен быть основным, например activeByDefault = true

1 Ответ

0 голосов
/ 08 ноября 2018

Для решения этой проблемы я изменил имена свойств, такие как <database.driver_class_name> до <database.driver_class_name.pom>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...