Было немного сложно придумать осмысленное название, надеюсь, оно станет достаточно ясным после объяснения. Я просмотрел несколько Qs и As на SO, и все они были очень близки к проблеме, с которой я сталкиваюсь, но все еще не достаточно близко. сохранить версию проекта в БД, обратившись к свойству maven @project.version@
из файла .csv
, который загружается скриптом Liquibase. Моя структура проекта maven выглядит следующим образом:
parentModule
pom.xml
|
---moduleA
|__pom.xml
---moduleB
|__pom.xml
---moduleC
|__pom.xml
...
Pom. xml определены как:
**PARENT POM**
<project ...>
<groupId>com.parent</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>parent</name>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.2.1.RELEASE</version>
<relativePath />
</parent>
<properties>
<java.version>8</java.version>
</properties>
<modules>
<module>moduleA</module>
<module>moduleB</module>
<module>moduleC</module>
...
</modules>
<build>
<defaultGoal>package</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
----------------------------------------------------------------------
**CHILD POM**
<project ...>
<artifactId>moduleC</artifactId>
<name>moduleC</name>
<parent>
<groupId>com.parent</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
</parent>
<dependencies>
<dependency>
...
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>moduleC/src/main/resources/db/changelog/</directory>
<filtering>true</filtering>
<includes>
<include>**/app_version.csv/</include>
</includes>
</resource>
</resources>
</build>
</project>
Сценарии Liquibase определены в moduleC/src/main/resources/db/changelog/changelog-master.xml
et c., Тогда как CSV-файлы с начальными значениями находятся в moduleC/src/main/resources/db/users.csv
et c. В одном из этих CSV-файлов я хочу указать значение pu sh @project.version@
, например:
id;app_key;app_value;created_by;last_modified_by
1;app-version;@project.version@;system;system
Поскольку этот файл находится в moduleC
, я использовал фильтрацию ресурсов maven даже в parentModule
<build/>
чтобы отфильтровать этот файл, чтобы он мог разрешить свойство @project.version@
, но не повезло:
<build>
<resources>
<resource>
<directory>moduleC/src/main/resources/db/changelog/</directory>
<filtering>true</filtering>
<includes>
<include>**/app_version.csv/</include>
</includes>
</resource>
</resources>
<defaultGoal>package</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
Есть ошибки, одна из которых говорит о том, что главный журнал изменений не может быть найден, а в других случаях просто строковое значение @project.version@
сохраняется. Мне кажется, я должен включить app_version.csv
и его местоположение (moduleC
) в качестве ресурса внутри тега <build>
с parentModule pom. xml, но каждая комбинация ссылок на него терпит неудачу. Есть ли решение для правильной ссылки на него (либо из parentModule, либо из модуля C pom. xml), либо может быть более простой способ хранения @project.version@
с жидкой базой?