A common maven parent for usage in kotlin library or application projects.
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
.
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.
This is a maven parent. So just include it on the top of your root pom.xml
:
<parent>
<groupId>io.toolisticon.maven.parent</groupId>
<artifactId>maven-parent-kotlin-base</artifactId>
<version>LATEST_VERSION</version>
<relativePath/>
</parent>
Carefully analyse your pom (and the effective pom) and remove duplications, unintended overwrites and possible conflicts ... and you are done.
Following the x-compile guide for maven/kotlin the correct kotlin and java compilers are included.
Type | Version | Info |
---|---|---|
kotlin | 2.1.0 |
used in kotlin compiler und kotlin libs. |
java | 17 |
compile target |
kotlinx-coroutines | 1.9.1 |
all BOM libs explicitly listed |
kotlinx-serialization | 1.7.3 |
all BOM libs explicitly listed |
kotlin-logging | 3.0.5 |
logging support |
Lib | Version | Info |
---|---|---|
jetbrains-annotations | 26.0.1 |
common annotations |
junit5 | 5.11.4 |
bom dependency, unit testing |
see official plugins
Plugin | Version | Info |
---|---|---|
maven-compiler | 3.13.0 |
disabling java compiler for kotlin projects |
kotlin-maven-plugin | 2.0.0 |
kotlin compiler plugin |
maven-javadoc | 3.11.2 |
include javadoc |
dokka | 2.0.0 |
use dokka for javadoc |
avro-maven | 1.12.0 |
avro code generation |
maven-clean | 3.4.0 |
clean project |
maven-dependency | 3.8.1 |
check/update dependency versions |
maven-deploy | 3.1.3 |
- |
maven-enforcer | 3.4.1 |
enforce project setup |
maven-failsafe | 3.5.2 |
testing |
maven-gpg | 3.2.7 |
sign artifacts for release |
maven-install | 3.1.3 |
- |
maven-jar-plugin | 3.4.2 |
- |
maven-resources | 3.3.1 |
filter resources |
maven-source | 3.3.1 |
add sources to artifacts |
maven-surefire | 3.5.2 |
testing |
build-helper | 3.6.0 |
define source directories |
gitflow-maven | 1.21.0 |
gitflow relase master/develop/release |
jacoco-maven | 0.8.12 |
test reports |
jgiven-maven | 2.0.1 |
jgiven test reports |
openapi-generator | 7.10.0 |
openapi/swagger code generation |
properties-maven | 1.2.1 |
generate build properties for project |
versions-maven | 2.18.0 |
modify versions of project |
nexus-staging-maven | 1.6.13 |
release on maven central |
maven-wrapper | 3.3.2 |
execute maven without central installation |
- close milestone in GitHub
- on local console:
mvn release:start
- wait for action - on local console:
mvn release:finish
- wait for action - sonatype pipeline will run - publish a release on GitHub (prepared version is in drafts)