liquibase-r2dbc-spring-boot-starter-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.daggerok</groupId>
<artifactId>liquibase-r2dbc-spring-boot-starter-parent</artifactId>
<version>3.1.3</version>
</dependency><?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modules>
<module>liquibase-r2dbc-spring-boot-starter</module>
<module>examples/h2/mem</module>
<module>examples/h2/file</module>
<module>examples/mariadb</module>
<module>examples/mysql</module>
<module>examples/postgresql</module>
</modules>
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.daggerok</groupId>
<artifactId>liquibase-r2dbc-spring-boot-starter-parent</artifactId>
<version>3.1.3</version>
<name>${project.artifactId}</name>
<description>The liquibase-r2dbc-spring-boot-starter maven parent project</description>
<url>https://github.com/daggerok/liquibase-r2dbc-spring-boot-starter</url>
<developers>
<developer>
<name>Maksim Kostromin</name>
<email>daggerok@gmail.com</email>
<organization>Sets of open source Maksim Kostromin aka daggerok projects</organization>
<organizationUrl>https://github.com/daggerok/</organizationUrl>
</developer>
</developers>
<organization>
<name>Maksim Kostromin aka daggerok open source projects sets</name>
<url>https://github.com/daggerok/</url>
</organization>
<licenses>
<license>
<name>MIT License</name>
<distribution>repo</distribution>
<!-- <url>https://opensource.org/licenses/MIT</url> -->
<url>https://github.com/daggerok/liquibase-r2dbc-spring-boot-starter/blob/master/LICENSE</url>
</license>
</licenses>
<scm>
<developerConnection>scm:git:git@github.com:daggerok/liquibase-r2dbc-spring-boot-starter.git</developerConnection>
<connection>scm:git:https://github.com/daggerok/liquibase-r2dbc-spring-boot-starter.git</connection>
<url>https://github.com/daggerok/liquibase-r2dbc-spring-boot-starter</url>
<!-- <tag>master</tag> -->
<tag>HEAD</tag>
</scm>
<properties>
<gpg.skip>true</gpg.skip>
<spring-boot.version>3.1.3</spring-boot.version>
<testcontainers.version>1.19.0</testcontainers.version>
<r2dbc-mysql.version>0.8.2.RELEASE</r2dbc-mysql.version>
<log4j-api-kotlin.version>1.2.0</log4j-api-kotlin.version>
<maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
<webjars.npm.mvp.css.version>1.8.0</webjars.npm.mvp.css.version>
<javax.activation-api.version>1.2.0</javax.activation-api.version>
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
<versions-maven-plugin.version>2.13.0</versions-maven-plugin.version>
<frontend-maven-plugin.version>1.12.1</frontend-maven-plugin.version>
<frontend-maven-plugin.npmVersion>9.5.0</frontend-maven-plugin.npmVersion>
<frontend-maven-plugin.nodeVersion>v19.7.0</frontend-maven-plugin.nodeVersion>
<nexus-staging-maven-plugin.version>1.6.13</nexus-staging-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api-kotlin</artifactId>
</dependency>
<!-- -->
<dependency>
<groupId>io.projectreactor.kotlin</groupId>
<artifactId>reactor-kotlin-extensions</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
<optional>true</optional>
</dependency>
<!-- -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<!-- -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
<scope>test</scope>
</dependency>
<!-- -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mysql</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mariadb</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mssqlserver</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-bom</artifactId>
<version>${testcontainers.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api-kotlin</artifactId>
<version>${log4j-api-kotlin.version}</version>
<type>jar</type>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<defaultGoal>verify</defaultGoal>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-info</goal>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${versions-maven-plugin.version}</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<rulesUri>file:///${maven.multiModuleProjectDirectory}/.mvn/versions-maven-plugin-rules.xml</rulesUri>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring-boot.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>fix-kotlin-missing-javadoc-and-attach-empty-archive-instead</id>
<phase>prepare-package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<!--suppress UnresolvedMavenProperty -->
<file>${maven.multiModuleProjectDirectory}/.ossrh/kotlin-empty-javadoc.zip</file>
<type>jar</type>
<classifier>javadoc</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<configuration>
<skip>${gpg.skip}</skip>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>set-npm-version</id>
<activation>
<file>
<exists>./docs/package.json</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>${frontend-maven-plugin.version}</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<installDirectory>${maven.multiModuleProjectDirectory}/target</installDirectory>
<workingDirectory>${maven.multiModuleProjectDirectory}/docs</workingDirectory>
<nodeVersion>${frontend-maven-plugin.nodeVersion}</nodeVersion>
<npmVersion>${frontend-maven-plugin.npmVersion}</npmVersion>
</configuration>
<executions>
<execution>
<phase>initialize</phase>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
</execution>
<execution>
<phase>initialize</phase>
<id>npm version ${project.version}</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>version ${project.version} --allow-same-version</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>template-variables-substitutions</id>
<activation>
<file>
<exists>./src/main/templates</exists>
</file>
</activation>
<build>
<resources>
<resource>
<directory>./src/main/templates</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>template-variables-substitutions</id>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
<configuration>
<delimiters>
<delimiter>${*}</delimiter>
</delimiters>
<outputDirectory>./</outputDirectory>
<overwrite>true</overwrite>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>local-publish</id>
<!--
This profile must be used to simply verify how local maven publishing with works:
./mvnw clean ; ./mvnw -DskipTests -P local-publish -Dgpg.passphrase=yourPassphrase
-->
<build>
<defaultGoal>clean deploy</defaultGoal>
</build>
<distributionManagement>
<repository>
<id>local-maven-repo</id>
<!--suppress UnresolvedMavenProperty -->
<url>file://${maven.multiModuleProjectDirectory}/target/.m2/repository</url>
</repository>
</distributionManagement>
</profile>
<profile>
<id>local-release</id>
<!--
This profile can be used if you want to:
- change x.y.z-SNAPSHOT version to released x.y.z
- commit that change
- create x.y.z git tag
- change x.y.z version to next development x.y.(z+1)-SNAPSHOT
- commit that change
- and finally publish everything to GitHub
./mvnw -B -P local-release
-->
<build>
<defaultGoal>release:clean release:prepare release:perform</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<releaseProfiles>local-publish</releaseProfiles>
<arguments>-B -DskipTests -Dmaven.deploy.skip=true -DgenerateBackupPoms=false</arguments>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>@{project.version}</tagNameFormat>
<generateReleasePoms>false</generateReleasePoms>
<resume>false</resume>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>read gpg.passphrase system property</id>
<!--
This profile will pick `gpg.passphrase` java system property to configure maven-gpg-plugin passphrase implicitly
./mvnw -Dgpg.passphrase=...
-->
<activation>
<property>
<name>gpg.passphrase</name>
</property>
</activation>
<properties>
<gpg.skip>false</gpg.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<passphrase>${gpg.passphrase}</passphrase>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>read GPG_PASSPHRASE environment variable</id>
<!--
This profile will pick `GPG_PASSPHRASE` environment variable to configure maven-gpg-plugin passphrase implicitly
GPG_PASSPHRASE=... ./mvnw ...
-->
<activation>
<property>
<name>env.GPG_PASSPHRASE</name>
</property>
</activation>
<properties>
<gpg.skip>false</gpg.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<passphrase>${env.GPG_PASSPHRASE}</passphrase>
<!-- Prevent `gpg` from using pinentry programs -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>central-release</id>
<!--
This profile mainly must be used to release project artifacts to central maven repository
Prerequisites are:
- gpg install, private key with passphrase generated
- maven pom.xml required plugins added and configured with proper profiles
Workflow:
- If you want to sync project version with spring boot (for example you want to set
project version same as spring-boot 2.7.14) before release use according script:
bash .bin/update-version.sh 2.7.14-SNAPSHOT
- Let's say your version is x.y.z-SNAPSHOT
./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout
- Then you can deploy snapshot version to maven central just like so:
GPG_PASSPHRASE=... ./mvnw -P central-release clean deploy
- When testing of deployed x.y.z-SNAPSHOT is done, you can change version to released: x.y.z-SNAPSHOT -> x.y.z
./mvnw build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.incrementalVersion}
- If something goes wrong, you can simply revert last change with help of previously created pom.xml.versionsBackup files:
./mvnw build-helper:parse-version versions:revert
- Otherwise commit, this will remove all generated pom.xml.versionsBackup files:
./mvnw build-helper:parse-version versions:commit
- Let's commit release version with these commands:
VERSION=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
git add . ; git commit -am "Release $VERSION version manually." ; git push origin master
- And release x.y.z version artifacts to maven central:
GPG_PASSPHRASE=... ./mvnw -P central-release clean deploy
- It's time to create and push GitHub tag released version:
git tag $VERSION ; git push origin $VERSION
- Finally create next SNAPSHOT version for future development iteration: x.y.z -> x.y.(z+1)-SNAPSHOT
./mvnw build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT
./mvnw build-helper:parse-version versions:commit
VERSION=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
git add . ; git commit -am "Start next $VERSION development iteration." ; git push origin master
see: https://central.sonatype.org/publish/publish-maven/#nexus-staging-maven-plugin-for-deployment-and-release
-->
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<defaultGoal>clean deploy</defaultGoal>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${nexus-staging-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
<tags>
<localUsername>${env.USER}</localUsername>
<javaVersion>${java.version}</javaVersion>
</tags>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>