https://github.com/toolisticon/maven-parent-kotlin-base
Maven parent for a holistic kotlin lib project.
https://github.com/toolisticon/maven-parent-kotlin-base
Last synced: 3 months ago
JSON representation
Maven parent for a holistic kotlin lib project.
- Host: GitHub
- URL: https://github.com/toolisticon/maven-parent-kotlin-base
- Owner: toolisticon
- License: apache-2.0
- Created: 2023-05-30T13:59:56.000Z (about 3 years ago)
- Default Branch: develop
- Last Pushed: 2026-02-23T23:10:57.000Z (4 months ago)
- Last Synced: 2026-02-24T05:45:26.057Z (4 months ago)
- Homepage:
- Size: 717 KB
- Stars: 2
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# maven-parent-kotlin-base
A common maven parent for usage in kotlin library or application projects.
[](https://github.com/holisticon#open-source-lifecycle)
[](https://github.com/toolisticon/maven-parent-kotlin-base/actions)
[](https://holisticon.de/)
[](http://kotlinlang.org)
[](https://central.sonatype.com/artifact/io.toolisticon.maven.parent/maven-parent-kotlin-base)
## About
Maven poms are quite bloated, Most of the settings (how to compile, how to deploy) are repeated over and over.
This maven-parent aims to reduce the xml in your `pom.xml` to the things you really want to express in your library or application project.
By nature of this module, it is a highly opinionated approach. It might fit your needs, but it is explicitly designed to support open source library
projects we are currently building and maintaining under `toolisticon`, `holunda-io` and `holixon`.

### Versioning
Since this parent wraps countless versions of other libs and plugins, it cannot have any meaningful version itself.
The semantic versioning conventions is `YEAR.MONTH.COUNT`, so the first build in September would be `version=2023.9.0` ... and counting.
## How to use?
This is a maven parent. So just include it on the top of your root `pom.xml`:
```xml
io.toolisticon.maven.parent
maven-parent-kotlin-base
LATEST_VERSION
```
Carefully analyse your pom (and the effective pom) and remove duplications, unintended overwrites and possible conflicts ... and you are done.
## Features
### Kotlin only compilation
Following the [x-compile guide](https://kotlinlang.org/docs/maven.html#compile-kotlin-and-java-sources) for maven/kotlin the correct kotlin and java compilers
are included.
## Versions
### Language
| Type | Version | Info |
|-----------------------|----------|-------------------------------------------|
| kotlin | `2.3.10` | used in kotlin compiler und kotlin libs. |
| java | `17` | compile target |
| kotlinx-coroutines | `1.10.2` | all BOM libs explicitly listed |
| kotlinx-serialization | `1.10.0` | all BOM libs explicitly listed |
| [kotlin-logging](https://github.com/oshai/kotlin-logging) | `8.0.01` | logging support |
## Libs
| Lib | Version | Info |
|-----------------------|----------|----------------------|
| api-guardian | `1.1.2` | api annotations |
| jetbrains-annotations | `26.1.0` | common annotations |
| logback-classic | `1.5.32` | logging |
| slf4j | `2.0.17` | logging |
| assertj | `3.27.7` | bom, test assertions |
| awaitility | `4.3.0` | async testing |
| equalsverifier | `4.3.1` | test |
| jgiven | `2.0.3` | BDD testing |
| junit | `6.0.3` | bom, unit testing |
| mockito-kotlin | `6.2.2` | test, mocking |
## Plugins
see [official plugins](https://maven.apache.org/plugins/index.html)
| Plugin | Version | Info |
|---------------------------------------------------------------------------------------------------------------------------|----------|---------------------------------------------|
| [maven-compiler](https://maven.apache.org/plugins/maven-compiler-plugin/) | `3.14.1` | disabling java compiler for kotlin projects |
| [kotlin-maven-plugin](https://kotlinlang.org/docs/maven.html) | `2.3.0` | kotlin compiler plugin |
| [maven-javadoc](https://maven.apache.org/plugins/maven-javadoc-plugin/) | `3.12.0` | include javadoc |
| [dokka](https://kotlinlang.org/docs/dokka-maven.html#apply-dokka) | `2.1.0` | use dokka for javadoc |
| [avro-maven](https://avro.apache.org/docs/1.12.0/getting-started-java/) | `1.12.1` | avro code generation |
| [maven-clean](https://maven.apache.org/plugins/maven-clean-plugin/) | `3.5.0` | clean project |
| [maven-dependency](https://maven.apache.org/plugins/maven-dependency-plugin/) | `3.10.0` | check/update dependency versions |
| [maven-deploy](https://maven.apache.org/plugins/maven-deploy-plugin/) | `3.1.4` | - |
| [maven-enforcer](https://maven.apache.org/enforcer/maven-enforcer-plugin/) | `3.6.2` | enforce project setup |
| [maven-failsafe](https://maven.apache.org/surefire/maven-failsafe-plugin/) | `3.5.4` | testing |
| [maven-gpg](https://maven.apache.org/plugins/maven-gpg-plugin/) | `3.2.8` | sign artifacts for release |
| [maven-install](https://maven.apache.org/plugins/maven-install-plugin/) | `3.1.4` | - |
| [maven-jar-plugin](https://maven.apache.org/plugins/maven-jar-plugin/) | `3.5.0` | - |
| [maven-resources](https://maven.apache.org/plugins/maven-resources-plugin/) | `3.4.0` | filter resources |
| [maven-source](https://maven.apache.org/plugins/maven-source-plugin/) | `3.4.0` | add sources to artifacts |
| [maven-surefire](https://maven.apache.org/surefire/maven-surefire-plugin/) | `3.5.4` | testing |
| [directory-maven-plugin](https://github.com/hazendaz/directory-maven-plugin) | `1.2.2` | expose root dir for multimudule |
| [build-helper](https://www.mojohaus.org/build-helper-maven-plugin/) | `3.6.1` | define source directories |
| [gitflow-maven](https://aleksandr-m.github.io/gitflow-maven-plugin/) | `1.21.0` | gitflow relase master/develop/release |
| [jacoco-maven](https://www.eclemma.org/jacoco/trunk/doc/maven.html) | `0.8.14` | test reports |
| [jgiven-maven](https://jgiven.org/userguide/#_maven) | `2.0.3` | jgiven test reports |
| [openapi-generator](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator-maven-plugin) | `7.20.0` | openapi/swagger code generation |
| [properties-maven](https://www.mojohaus.org/properties-maven-plugin/) | `1.3.0` | generate build properties for project |
| [versions-maven](https://www.mojohaus.org/versions/versions-maven-plugin/index.html) | `2.21.0` | modify versions of project |
| [central-publishing](https://central.sonatype.org/publish/publish-portal-maven/) | `0.10.0` | release on maven central |
| [maven-wrapper](https://maven.apache.org/wrapper/maven-wrapper-plugin/plugin-info.html) | `3.3.4` | execute maven without central installation |
| [flatten-maven](https://www.mojohaus.org/flatten-maven-plugin/) | `1.7.3` | flatten the released pom |
## Release a new version
1. close milestone in GitHub
1. on local console: `mvn release:start` - wait for action
1. on local console: `mvn release:finish` - wait for action - sonatype pipeline will run
1. publish a release on GitHub (prepared version is in drafts)