222 lines
8.6 KiB
XML
222 lines
8.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||
<modelVersion>4.0.0</modelVersion>
|
||
|
||
<parent>
|
||
<groupId>cloud.nstart.terravault.ordinis</groupId>
|
||
<artifactId>ordinis-parent</artifactId>
|
||
<version>0.1.0-SNAPSHOT</version>
|
||
</parent>
|
||
|
||
<artifactId>ordinis-app</artifactId>
|
||
<name>Ordinis :: App (writer)</name>
|
||
<description>Spring Boot main для writer side: REST admin + outbox publisher + ЦУОД bundle.</description>
|
||
|
||
<dependencies>
|
||
<dependency>
|
||
<groupId>cloud.nstart.terravault.ordinis</groupId>
|
||
<artifactId>ordinis-rest-api</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>cloud.nstart.terravault.ordinis</groupId>
|
||
<artifactId>ordinis-notifications</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>cloud.nstart.terravault.ordinis</groupId>
|
||
<artifactId>ordinis-cuod-bundle</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Cross-cutting -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.micrometer</groupId>
|
||
<artifactId>micrometer-registry-prometheus</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>net.logstash.logback</groupId>
|
||
<artifactId>logstash-logback-encoder</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Observability — OpenTelemetry -->
|
||
<dependency>
|
||
<groupId>io.opentelemetry.instrumentation</groupId>
|
||
<artifactId>opentelemetry-spring-boot-starter</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Config + Vault -->
|
||
<dependency>
|
||
<groupId>org.springframework.cloud</groupId>
|
||
<artifactId>spring-cloud-starter-config</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.springframework.cloud</groupId>
|
||
<artifactId>spring-cloud-starter-vault-config</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Migrations module — нужен на classpath для миграций при тесте,
|
||
в проде Liquibase запускается отдельным Job в k8s. -->
|
||
<dependency>
|
||
<groupId>cloud.nstart.terravault.ordinis</groupId>
|
||
<artifactId>ordinis-migrations</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<!-- Test -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.springframework.security</groupId>
|
||
<artifactId>spring-security-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.springframework.kafka</groupId>
|
||
<artifactId>spring-kafka-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.testcontainers</groupId>
|
||
<artifactId>junit-jupiter</artifactId>
|
||
<version>1.21.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.testcontainers</groupId>
|
||
<artifactId>postgresql</artifactId>
|
||
<version>1.21.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.testcontainers</groupId>
|
||
<artifactId>kafka</artifactId>
|
||
<version>1.21.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.awaitility</groupId>
|
||
<artifactId>awaitility</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<!-- nimbus-jose-jwt — на compile classpath через ordinis-auth.
|
||
Здесь не дублируем (тест-scope direct override compile-transitive
|
||
и nimbus не попадает в Spring Boot fat jar). -->
|
||
|
||
<dependency>
|
||
<groupId>org.liquibase</groupId>
|
||
<artifactId>liquibase-core</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
<build>
|
||
<plugins>
|
||
<!-- Resolves git.commit.id.abbrev / git.branch / git.tags из локального .git
|
||
directory. Properties доступны для других plugin'ов в той же phase'е.
|
||
CI без .git folder → плагин fallback'ит к "Unknown", это OK. -->
|
||
<plugin>
|
||
<groupId>io.github.git-commit-id</groupId>
|
||
<artifactId>git-commit-id-maven-plugin</artifactId>
|
||
<version>9.0.1</version>
|
||
<executions>
|
||
<execution>
|
||
<id>git-info</id>
|
||
<goals><goal>revision</goal></goals>
|
||
<phase>validate</phase>
|
||
</execution>
|
||
</executions>
|
||
<configuration>
|
||
<failOnNoGitDirectory>false</failOnNoGitDirectory>
|
||
<failOnUnableToExtractRepoInfo>false</failOnUnableToExtractRepoInfo>
|
||
<skipPoms>false</skipPoms>
|
||
<generateGitPropertiesFile>false</generateGitPropertiesFile>
|
||
<includeOnlyProperties>
|
||
<includeOnlyProperty>^git.commit.id.abbrev$</includeOnlyProperty>
|
||
<includeOnlyProperty>^git.branch$</includeOnlyProperty>
|
||
<includeOnlyProperty>^git.tags$</includeOnlyProperty>
|
||
<includeOnlyProperty>^git.commit.time$</includeOnlyProperty>
|
||
</includeOnlyProperties>
|
||
</configuration>
|
||
</plugin>
|
||
<plugin>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||
<executions>
|
||
<!-- Генерирует META-INF/build-info.properties → Spring Boot создаёт
|
||
BuildProperties bean → VersionController экспонирует /api/v1/version
|
||
для UI update banner. См. ordinis-rest-api/.../web/VersionController.
|
||
git.* properties resolved выше через git-commit-id-maven-plugin. -->
|
||
<execution>
|
||
<id>build-info</id>
|
||
<goals><goal>build-info</goal></goals>
|
||
<configuration>
|
||
<additionalProperties>
|
||
<commit>${git.commit.id.abbrev}</commit>
|
||
<branch>${git.branch}</branch>
|
||
<tag>${git.tags}</tag>
|
||
<gitTime>${git.commit.time}</gitTime>
|
||
</additionalProperties>
|
||
</configuration>
|
||
</execution>
|
||
</executions>
|
||
</plugin>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-surefire-plugin</artifactId>
|
||
<configuration>
|
||
<!-- По умолчанию e2e тесты НЕ запускаются — нужны Postgres+Kafka
|
||
через Testcontainers (требует Docker). Включить через профиль
|
||
`-P e2e` (см. ниже). Локально: либо профиль, либо `-Dtest=*E2ETest`. -->
|
||
<excludes>
|
||
<exclude>**/e2e/*E2ETest.java</exclude>
|
||
</excludes>
|
||
<!-- Testcontainers требует DOCKER_HOST. На macOS Docker Desktop
|
||
socket в ~/.docker/run, не /var/run. ENV не наследуется в
|
||
forked surefire процесс по умолчанию — пробрасываем явно. -->
|
||
<environmentVariables>
|
||
<DOCKER_HOST>${env.DOCKER_HOST}</DOCKER_HOST>
|
||
<DOCKER_API_VERSION>1.45</DOCKER_API_VERSION>
|
||
<TESTCONTAINERS_RYUK_DISABLED>true</TESTCONTAINERS_RYUK_DISABLED>
|
||
<!-- Для CI с docker:dind service: указывает testcontainers
|
||
что spawned контейнеры доступны через `docker` hostname,
|
||
не localhost. Локально пусто → testcontainers default. -->
|
||
<TESTCONTAINERS_HOST_OVERRIDE>${env.TESTCONTAINERS_HOST_OVERRIDE}</TESTCONTAINERS_HOST_OVERRIDE>
|
||
</environmentVariables>
|
||
<systemPropertyVariables>
|
||
<api.version>1.45</api.version>
|
||
</systemPropertyVariables>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
|
||
<profiles>
|
||
<profile>
|
||
<!-- Включает e2e тесты (Testcontainers). Запускать на CI runner с DinD
|
||
либо локально с Docker Desktop. -->
|
||
<id>e2e</id>
|
||
<build>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-surefire-plugin</artifactId>
|
||
<configuration>
|
||
<excludes combine.self="override"/>
|
||
<includes>
|
||
<include>**/e2e/*E2ETest.java</include>
|
||
</includes>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
</profile>
|
||
</profiles>
|
||
</project>
|