Я пытаюсь создать журнал изменений для существующих 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>
Вы можете использовать папку «/resource/log» для создания файлов журнала. Spring также записывает журналы в файл «/tmp/Spring.log».
@Jens - я указал на папку, которая уже существует C:\\Logs\\dbChangeLog.xml, но файл там все равно не создается.
@Bibek - я пытался вставить папку /resource/log, но нигде не вижу, чтобы она генерировалась.
Найдите в своей файловой системе файл с именем dbChangeLog.xml. Может быть, он был создан в другом месте? Также проверьте наличие исключений в журнале. Когда у Liquibase возникают проблемы с созданием вашего файла журнала изменений, в вашем журнале могут быть исключения, которые могут вам помочь...
@Jens - искал это. Ничего не нашел.




Попробуйте другую версию 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. Но не повезло. Просто файл не создается. Для меня это выглядит как проблема с конфигурацией с моей стороны.
Я была такая же проблема. Проверил xmldoc плагина maven, и бывает, что вам нужно использовать параметр <outputChangeLogFile> вместо <changeLogFile>.
src/main/resources не существует во время выполнения