Skip to content

toolisticon/maven-parent-kotlin-base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

maven-parent-kotlin-base

A common maven parent for usage in kotlin library or application projects.

stable Build Status sponsored Maven Central

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.

Alt

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:

 <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.

Features

Kotlin only compilation

Following the x-compile guide for maven/kotlin the correct kotlin and java compilers are included.

Versions

Language

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

Libs

Lib Version Info
jetbrains-annotations 26.0.1 common annotations
junit5 5.11.4 bom dependency, unit testing

Plugins

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

Release a new version

  1. close milestone in GitHub
  2. on local console: mvn release:start - wait for action
  3. on local console: mvn release:finish - wait for action - sonatype pipeline will run
  4. publish a release on GitHub (prepared version is in drafts)