Liquibase не создает файл журнала изменений в папке src/main/resources из существующей БД в Spring Boot

Я пытаюсь создать журнал изменений для существующих DB через Liquibase и Spring Boot.

В окне терминала, когда я запускаю mvn liquibase:generateChangeLog, я вижу XML вывод всего журнала изменений, который генерируется и прокручивается, но файл не создается в папке src/main/resources даже после указания пути в конфигурации плагина liquibase-maven-plugin в pom.

приложение.свойства

spring.datasource.url=jdbc:oracle:thin:@//person-db:6136/person-sid
spring.datasource.username=abc
spring.datasource.password=def
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

пом.xml

  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.0.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <dependency>
     <groupId>org.liquibase</groupId>
     <artifactId>liquibase-core</artifactId>
  </dependency>

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <configuration>
                    <changeLogFile>src/main/resources/dbChangeLog.xml</changeLogFile>
                    <driver>oracle.jdbc.OracleDriver</driver>
                    <url>jdbc:oracle:thin:@//person-db:6136/person-sid</url>
                    <username>abc</username>
                    <password>def</password>
                </configuration>
            </plugin>
        </plugins>
    </build>

Журналы терминала (после выполнения команды mvn liquibase:generateChangeLog)

<databaseChangeLog>
    .....
    <changeSet author = "R649526 (generated)" id = "1553629923684-9">
            <createTable tableName = "APPL_SNDER_TRGR_CNTL" tablespace = "TS_USRT_DEV_SML_DATA">
                <column name = "RECEIVING_APPL_ID" type = "VARCHAR2(8 BYTE)">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067672"/>
                </column>
                <column name = "SNDING_APPL_ID" type = "VARCHAR2(8 BYTE)">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067672"/>
                </column>
                <column name = "RECEIVING_APPL_CHNL_ID" type = "VARCHAR2(2 BYTE)">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067672"/>
                </column>
                <column name = "LINK_DIR_CD" type = "VARCHAR2(1 BYTE)"/>
                <column name = "SNDING_APPL_TRGR_NM" type = "VARCHAR2(80 BYTE)">
                    <constraints nullable = "false"/>
                </column>
                <column name = "LAST_UPDT_TS" type = "TIMESTAMP(6)">
                    <constraints nullable = "false"/>
                </column>
            </createTable>
        </changeSet>
        <changeSet author = "R649526 (generated)" id = "1553629923684-10">
            <createTable tableName = "BAT_APPL_FILE_CNTL" tablespace = "TS_USRT_DEV_SML_DATA">
                <column name = "APPL_ID" type = "VARCHAR2(8 BYTE)">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067673"/>
                </column>
                <column name = "BAT_FILE_CNTL_TS" type = "TIMESTAMP(6)">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067673"/>
                </column>
                <column name = "LINK_DIR_CD" type = "VARCHAR2(1 BYTE)">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067673"/>
                </column>
                <column name = "BAT_FILE_NB" type = "NUMBER">
                    <constraints primaryKey = "true" primaryKeyName = "SYS_C0067673"/>
                </column>
                <column name = "BAT_FILE_CRE_TS" type = "TIMESTAMP(6)">
                    <constraints nullable = "false"/>
                </column>
                <column name = "BAT_FILE_MSG_CNT" type = "NUMBER">
                    <constraints nullable = "false"/>
                </column>
                <column name = "BAT_FILE_PROC_TS" type = "TIMESTAMP(6)"/>
                <column name = "BAT_FILE_STS_CD" type = "VARCHAR2(1 BYTE)">
                    <constraints nullable = "false"/>
                </column>
                <column name = "BAT_FILE_RJCT_RSN_TX" type = "VARCHAR2(80 BYTE)"/>
                <column name = "LAST_UPDT_TS" type = "TIMESTAMP(6)"/>
            </createTable>
        </changeSet>
</databaseChangeLog>

src/main/resources не существует во время выполнения

Jens 26.03.2019 21:11

Вы можете использовать папку «/resource/log» для создания файлов журнала. Spring также записывает журналы в файл «/tmp/Spring.log».

Bibek Shrestha 26.03.2019 21:15

@Jens - я указал на папку, которая уже существует C:\\Logs\\dbChangeLog.xml, но файл там все равно не создается.

Nital 27.03.2019 15:11

@Bibek - я пытался вставить папку /resource/log, но нигде не вижу, чтобы она генерировалась.

Nital 27.03.2019 15:15

Найдите в своей файловой системе файл с именем dbChangeLog.xml. Может быть, он был создан в другом месте? Также проверьте наличие исключений в журнале. Когда у Liquibase возникают проблемы с созданием вашего файла журнала изменений, в вашем журнале могут быть исключения, которые могут вам помочь...

Jens 28.03.2019 10:37

@Jens - искал это. Ничего не нашел.

Nital 28.03.2019 20:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
6
1 039
2

Ответы 2

Попробуйте другую версию Liquibase, которая может вам помочь.

  <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.0.5</version>
            <configuration>
                <changeLogFile>src/main/resources/dbChangeLog.xml</changeLogFile>
                <driver>oracle.jdbc.OracleDriver</driver>
                <url>jdbc:oracle:thin:@//person-db:6136/person-sid</url>
                <username>abc</username>
                <password>def</password>
            </configuration>
        </plugin>
    </plugins>
</build>

Пробовал разные версии здесь 3.0.5, 3.5.5. Но не повезло. Просто файл не создается. Для меня это выглядит как проблема с конфигурацией с моей стороны.

Nital 28.03.2019 20:40

Я была такая же проблема. Проверил xmldoc плагина maven, и бывает, что вам нужно использовать параметр <outputChangeLogFile> вместо <changeLogFile>.

Другие вопросы по теме