maven-parent-kotlin-base
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.toolisticon.maven.parent</groupId>
<artifactId>maven-parent-kotlin-base</artifactId>
<version>2025.10.1</version>
</dependency><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 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<groupId>io.toolisticon.maven.parent</groupId>
<artifactId>maven-parent-kotlin-base</artifactId>
<version>2025.10.1</version>
<name>Maven Parent - Kotlin Base</name>
<description>Maven parent for a holistic kotlin lib project.</description>
<url>https://github.com/toolisticon/maven-parent-kotlin-base/</url>
<packaging>pom</packaging>
<properties>
<!-- region [MAVEN PROJECT SETTINGS] -->
<project.encoding>UTF-8</project.encoding>
<project.build.sourceEncoding>${project.encoding}</project.build.sourceEncoding>
<project.reporting.outputEncoding>${project.encoding}</project.reporting.outputEncoding>
<!-- endregion [MAVEN PROJECT SETTINGS] -->
<!-- region [KOTLIN PROJECT (KP) CUSTOM SETTINGS] -->
<kp.generatedSources>${project.build.directory}/generated-sources</kp.generatedSources>
<kp.generatedTestSources>${project.build.directory}/generated-test-sources</kp.generatedTestSources>
<kp.generatedResources>${project.build.directory}/generated-resources</kp.generatedResources>
<kp.generatedTestResources>${project.build.directory}/generated-test-resources</kp.generatedTestResources>
<kp.mainSources>${project.basedir}/src/main/kotlin</kp.mainSources>
<kp.mainResources>${project.basedir}/src/main/resources</kp.mainResources>
<kp.testSources>${project.basedir}/src/test/kotlin</kp.testSources>
<kp.testResources>${project.basedir}/src/test/resources</kp.testResources>
<!-- set to true to skip deployment (of submodule e.g.) -->
<kp.plugin.skipDeploy>false</kp.plugin.skipDeploy>
<kp.plugin.generateBackupPoms>false</kp.plugin.generateBackupPoms>
<kp.compile.useIncrementalKotlinCompiler>false</kp.compile.useIncrementalKotlinCompiler>
<kp.patternClassITest>**/*ITest.*</kp.patternClassITest>
<kp.patternClassTCTest>**/*TCTest.*</kp.patternClassTCTest>
<kp.javaOpenModules>--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED
</kp.javaOpenModules>
<kp.skipITests>false</kp.skipITests>
<!-- endregion [KOTLIN PROJECT (KP) CUSTOM SETTINGS] -->
<!-- region [LANGUAGE VERSIONS] -->
<kotlin.version>2.2.20</kotlin.version>
<kotlin.compiler.apiVersion>2.2</kotlin.compiler.apiVersion>
<kotlin.compiler.languageVersion>2.2</kotlin.compiler.languageVersion>
<kotlin.compiler.incremental>${kp.compile.useIncrementalKotlinCompiler}</kotlin.compiler.incremental>
<kotlin.compiler.jvmTarget>${java.version}</kotlin.compiler.jvmTarget>
<java.version>17</java.version>
<jdk.version>17</jdk.version>
<!-- endregion [LANGUAGE VERSIONS] -->
<!-- region [KOTLIN VERSIONS] -->
<kotlinx-serialization.version>1.9.0</kotlinx-serialization.version>
<kotlinx-coroutines.version>1.10.2</kotlinx-coroutines.version>
<kotlin-logging.version>7.0.13</kotlin-logging.version>
<!-- endregion [KOTLIN VERSIONS] -->
<!-- region [RUNTIME VERSIONS] -->
<apiguardian.version>1.1.2</apiguardian.version>
<jetbrains-annotations.version>26.0.2-1</jetbrains-annotations.version>
<logback.version>1.5.20</logback.version>
<!-- endregion [RUNTIME VERSIONS] -->
<!-- region [TEST VERSIONS] -->
<assertj.version>3.27.6</assertj.version>
<awaitility.version>4.3.0</awaitility.version>
<jgiven.version>2.0.3</jgiven.version>
<junit5.version>6.0.0</junit5.version>
<mockito-kotlin.version>6.1.0</mockito-kotlin.version>
<!-- endregion [TEST VERSIONS] -->
</properties>
<dependencyManagement>
<dependencies>
<!-- region [KOTLIN-BOM] -->
<!-- Using the kotlin-bom directly leads to problems with other boms, for example the spring-boot-dependencies -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk7</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-js</artifactId>
<version>${kotlin.version}</version>
<type>klib</type>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-common</artifactId>
<version>${kotlin.version}</version>
<type>pom</type>
</dependency>
<!-- Reflection Library -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- OSGI -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-osgi-bundle</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- kotlin.test -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit5</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-testng</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-js</artifactId>
<version>${kotlin.version}</version>
<type>klib</type>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-common</artifactId>
<version>${kotlin.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-annotations-common</artifactId>
<version>${kotlin.version}</version>
<type>pom</type>
</dependency>
<!-- Scripting -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-main-kts</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-script-runtime</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-scripting-common</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-scripting-jvm</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-scripting-jvm-host</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-scripting-ide-services</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- Compiler dependency required by scripting -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-compiler</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-compiler-embeddable</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-daemon-client</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- endregion [KOTLIN-BOM] -->
<!-- region [KOTLIN-KSP] -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-annotation-processing-embeddable</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- endregion [KOTLIN-KSP] -->
<!-- region [KOTLIN SERIALIZATION] -->
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-cbor-jvm</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-cbor</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-core-jvm</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-core</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-hocon</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-json-jvm</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-json</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-json-okio-jvm</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-json-okio</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-properties-jvm</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-properties</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-protobuf-jvm</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-protobuf</artifactId>
<version>${kotlinx-serialization.version}</version>
</dependency>
<!-- endregion [KOTLIN SERIALIZATION] -->
<!-- region [KOTLIN COROUTINES] -->
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-android</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core-jvm</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-debug</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-guava</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-javafx</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-jdk8</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-jdk9</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-play-services</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactive</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-rx2</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-rx3</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-slf4j</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-swing</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-test-jvm</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-test</artifactId>
<version>${kotlinx-coroutines.version}</version>
</dependency>
<!-- endregion [KOTLIN COROUTINES] -->
<!-- region [RUNTIME DEPENDENCIES] -->
<dependency>
<groupId>io.github.oshai</groupId>
<artifactId>kotlin-logging-jvm</artifactId>
<version>${kotlin-logging.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.apiguardian</groupId>
<artifactId>apiguardian-api</artifactId>
<version>${apiguardian.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>${jetbrains-annotations.version}</version>
</dependency>
<!-- endregion [RUNTIME DEPENDENCIES] -->
<!-- region [TEST DEPENDENCIES] -->
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit5.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-bom</artifactId>
<version>${assertj.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.mockito.kotlin</groupId>
<artifactId>mockito-kotlin</artifactId>
<version>${mockito-kotlin.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility-kotlin</artifactId>
<version>${awaitility.version}</version>
<scope>test</scope>
</dependency>
<!-- endregion [TEST DEPENDENCIES] -->
</dependencies>
</dependencyManagement>
<build>
<defaultGoal>clean package</defaultGoal>
<sourceDirectory>${kp.mainSources}</sourceDirectory>
<testSourceDirectory>${kp.testSources}</testSourceDirectory>
<!-- region [RESOURCES] -->
<!-- ignore gitkeep marker files -->
<resources>
<resource>
<directory>${kp.mainResources}</directory>
<excludes>
<exclude>.gitkeep</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>${kp.testResources}</directory>
<includes>
</includes>
<excludes>
<exclude>.gitkeep</exclude>
</excludes>
</testResource>
</testResources>
<!-- endregion [RESOURCES] -->
<pluginManagement>
<plugins>
<!-- LANGUAGE SETUP -->
<!-- from kotlin doc: "To compile projects that include Kotlin and Java source code, invoke the Kotlin compiler before the Java compiler." -->
<!-- region [COMPILER CONFIGURATION] -->
<!-- KOTLIN -->
<plugin>
<!-- KAPT is optional and has to be configured in modules using it -->
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<configuration>
<jvmTarget>${java.version}</jvmTarget>
<apiVersion>${kotlin.compiler.apiVersion}</apiVersion>
<languageVersion
>${kotlin.compiler.languageVersion}
</languageVersion>
<!-- Compiler plugins need to be configured on this level for IntelliJ to recognize them -->
<compilerPlugins>
<!-- <plugin>spring</plugin>-->
<!-- <plugin>jpa</plugin>-->
<plugin>no-arg</plugin>
<plugin>all-open</plugin>
</compilerPlugins>
<pluginOptions>
<!-- annotations that open kotlin files. don't hurt even if unused in kotlin project -->
<!-- <option>all-open:annotation=javax.persistence.Entity</option>-->
<!-- <option>all-open:annotation=javax.persistence.MappedSuperclass</option>-->
<!-- <option>all-open:annotation=javax.persistence.Embeddable</option>-->
<option>all-open:annotation=io.toolisticon.testing.jgiven.JGivenKotlinStage</option>
</pluginOptions>
</configuration>
<executions>
<!-- KOTLIN COMPILE -->
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!-- KOTLIN TEST -->
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
<!-- KOTLIN ITEST -->
<execution>
<id>integration-test-compile</id>
<phase>integration-test</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<!-- KOTLIN ALL-OPEN -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- KOTLIN NO-ARG -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-noarg</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- JAVA (from kotlin maven doc) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
<parameters>true</parameters>
</configuration>
<executions>
<!-- Replacing default-compile as it is treated specially by maven -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<!-- Replacing default-testCompile as it is treated specially by maven -->
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>java-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- endregion [COMPILER CONFIGURATION] -->
<!-- region [DOC CONFIGURATION] -->
<!-- JAVADOC -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<encoding>${project.encoding}</encoding>
</configuration>
</execution>
</executions>
</plugin>
<!-- DOKKA -->
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>2.1.0</version>
<executions>
<execution>
<phase>package</phase>
<id>attach-javadocs</id>
<goals>
<goal>javadocJar</goal>
</goals>
</execution>
</executions>
<configuration>
<jdkVersion>${jdk.version}</jdkVersion>
<reportUndocumented>false</reportUndocumented>
<skipEmptyPackages>true</skipEmptyPackages>
</configuration>
</plugin>
<!-- endregion [DOC CONFIGURATION] -->
<!-- ========== MAVEN OFFICIAL PLUGINS -->
<!-- [GENERATOR] - AVRO (version) -->
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.12.1</version>
</plugin>
<!-- CLEAN (version) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.5.0</version>
</plugin>
<!-- DEPENDENCY (version) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.9.0</version>
</plugin>
<!-- DEPLOY (version, config) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<skip>${kp.plugin.skipDeploy}</skip>
</configuration>
</plugin>
<!-- WRAPPER (execute maven without central installation) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-wrapper-plugin</artifactId>
<version>3.3.4</version>
</plugin>
<!-- ENFORCE (version, java target, maven target) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.6.2</version>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>${java.version}</version>
</requireJavaVersion>
<requireMavenVersion>
<version>3.9.0</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- [TEST] SUREFIRE (version, setup) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
<shutdown>kill</shutdown>
<runOrder>random</runOrder>
<excludes>
<exclude>${kp.patternClassITest}</exclude>
<exclude>${kp.patternClassTCTest}</exclude>
</excludes>
<!--suppress UnresolvedMavenProperty -->
<argLine
>${surefireArgLine} ${kp.javaOpenModules} -Djava.awt.headless=true -XX:+StartAttachListener
</argLine>
<systemPropertyVariables>
<jgiven.report.dir
>${project.build.directory}/jgiven-reports/json
</jgiven.report.dir>
</systemPropertyVariables>
</configuration>
</plugin>
<!-- [TEST] FAILSAFE (version, itest setup) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.5.4</version>
<executions>
<execution>
<id>integration-tests</id>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<skip>${kp.skipITests}</skip>
<classesDirectory
>${project.build.outputDirectory}
</classesDirectory>
<includes>
<include>${kp.patternClassITest}</include>
<include>${kp.patternClassTCTest}</include>
</includes>
<!--suppress UnresolvedMavenProperty -->
<argLine
>${failsafeArgLine} ${kp.javaOpenModules} -Djava.awt.headless=true -XX:+StartAttachListener
</argLine>
<systemPropertyVariables>
<jgiven.report.dir>${project.build.directory}/jgiven-reports/json</jgiven.report.dir>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>
<!-- [RELEASE] GPG (version)-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<configuration>
<!-- pass -Dgpg.keyname=.. and -Dgpg.passphrase=... -->
<gpgArguments>
<arg>--batch</arg>
<arg>--yes</arg>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- INSTALL (version) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.4</version>
</plugin>
<!-- SOURCE (version) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
<!-- also seen: jar ... which to choose? -->
</goals>
<configuration>
<attach>true</attach>
<forceCreation>true</forceCreation>
</configuration>
</execution>
</executions>
</plugin>
<!-- RESOURCES (version, encoding) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<encoding>${project.encoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.2</version>
</plugin>
<!-- ========== //MAVEN OFFICIAL -->
<!-- [TEST] JACOCO (version, setup) -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.14</version>
<executions>
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<skip>${skipTests}</skip>
<destFile
>${project.build.directory}/coverage-reports/jacoco-ut.exec
</destFile>
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>pre-integration-test</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
<configuration>
<skip>${kp.skipITests}</skip>
<destFile
>${project.build.directory}/coverage-reports/jacoco-it.exec
</destFile>
<propertyName>failsafeArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<skip>${skipTests}</skip>
<dataFile
>${project.build.directory}/coverage-reports/jacoco-ut.exec
</dataFile>
<outputDirectory
>${project.reporting.outputDirectory}/jacoco-ut
</outputDirectory>
</configuration>
</execution>
<execution>
<id>post-integration-test</id>
<phase>post-integration-test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<skip>${kp.skipITests}</skip>
<dataFile
>${project.build.directory}/coverage-reports/jacoco-it.exec
</dataFile>
<outputDirectory
>${project.reporting.outputDirectory}/jacoco-it
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- BUILD HELPER (version) -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.6.1</version>
</plugin>
<!-- [RELEASE] GITFLOW (version, config) -->
<plugin>
<groupId>com.amashchenko.maven.plugin</groupId>
<artifactId>gitflow-maven-plugin</artifactId>
<version>1.21.0</version>
<configuration>
<gitFlowConfig>
<productionBranch>master</productionBranch>
<developmentBranch>develop</developmentBranch>
<featureBranchPrefix>feature/</featureBranchPrefix>
<releaseBranchPrefix>release/</releaseBranchPrefix>
<hotfixBranchPrefix>hotfix/</hotfixBranchPrefix>
<supportBranchPrefix>support/</supportBranchPrefix>
<origin>origin</origin>
</gitFlowConfig>
<useSnapshotInHotfix>true</useSnapshotInHotfix>
<useSnapshotInRelease>true</useSnapshotInRelease>
<keepBranch>false</keepBranch>
<pushRemote>true</pushRemote>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.7.3</version>
</plugin>
<!-- [TEST] - JGIVEN (version, configuration, execution) -->
<plugin>
<groupId>com.tngtech.jgiven</groupId>
<artifactId>jgiven-maven-plugin</artifactId>
<version>${jgiven.version}</version>
<executions>
<execution>
<id>generate-report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
<configuration>
<format>html</format>
</configuration>
</plugin>
<!-- [GENERATOR] OPENAPI (version) -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.16.0</version>
</plugin>
<!-- [GENERATOR]: PROPERTIES (writes maven properties to src) (version,execution) -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile
>${project.build.outputDirectory}/${project.artifactId}-maven.properties
</outputFile>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.hazendaz.maven</groupId>
<artifactId>directory-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<id>directories</id>
<goals>
<goal>execution-root</goal>
</goals>
<phase>initialize</phase>
<configuration>
<property>project.root.dir</property>
</configuration>
</execution>
</executions>
</plugin>
<!-- VERSIONS (version, config) -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<generateBackupPoms
>${kp.plugin.generateBackupPoms}
</generateBackupPoms>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.7.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>itest</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<defaultGoal>verify</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<!--
Profile creating all artifacts: JARs, POMs, Sources, JavaDoc and all signatures.
-->
<profile>
<id>release</id>
<activation>
<property>
<name>release</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
</plugin>
<!-- Source from Kotlin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-kotlin-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${kp.mainSources}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<!-- jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries
>true
</addDefaultImplementationEntries>
<addDefaultSpecificationEntries
>true
</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<!-- [RELEASE] GPG -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
<!-- [RELEASE] NEXUS (version, configuration) -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.9.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<scm>
<connection
>scm:git:git@github.com:toolisticon/maven-parent-kotlin-base.git
</connection>
<url>scm:git:git@github.com:toolisticon/maven-parent-kotlin-base.git</url>
<developerConnection
>scm:git:git@github.com:toolisticon/maven-parent-kotlin-base.git
</developerConnection>
<tag>HEAD</tag>
</scm>
<developers>
<developer>
<id>jangalinski</id>
<name>Jan Galinski</name>
<roles>
<role>Product Owner</role>
<role>Developer</role>
</roles>
<organization>Holisticon AG</organization>
<organizationUrl>https://holisticon.de</organizationUrl>
</developer>
<developer>
<id>zambrovski</id>
<name>Simon Zambrovski</name>
<roles>
<role>Product Owner</role>
<role>Developer</role>
<role>Toolsmith</role>
</roles>
<organization>Holisticon AG</organization>
<organizationUrl>https://holisticon.de</organizationUrl>
</developer>
</developers>
</project>