https://github.com/marcwrobel/parent
My Maven projects parent POM
https://github.com/marcwrobel/parent
maven parent pom
Last synced: 4 months ago
JSON representation
My Maven projects parent POM
- Host: GitHub
- URL: https://github.com/marcwrobel/parent
- Owner: marcwrobel
- License: apache-2.0
- Created: 2019-07-21T20:35:07.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2025-11-21T14:05:35.000Z (7 months ago)
- Last Synced: 2026-02-19T20:43:35.619Z (4 months ago)
- Topics: maven, parent, pom
- Language: Shell
- Homepage:
- Size: 312 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
[](https://github.com/marcwrobel/parent/actions)
[](https://github.com/marcwrobel/parent/)
[](https://sonarcloud.io/dashboard?id=fr.marcwrobel:parent)
[](https://sonarcloud.io/dashboard?id=fr.marcwrobel:parent)
[](https://central.sonatype.com/artifact/fr.marcwrobel/parent)
Writing and maintaining Maven projects
[POM](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is
boring. This parent POM is simplifying those tasks in the context of my open source
projects by:
- defining common project and developer
[properties](https://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html)
that can be easily overridden in a single place;
- defining a convenient set of configuration default (if you use
[GitHub](https://github.com), [GitHub Actions](https://github.com/features/actions),
[Sonatype OSSRH](https://oss.sonatype.org), [Docker Hub](https://hub.docker.com)).
- providing dependency and plugin management
## How to use it?
Just inherit from it in your project :
```xml
4.0.0
fr.marcwrobel
parent
3.2.0
groupId
artifactId
x.y.z-SNAPSHOT
name
description
https://url.com
2020
...
1.8
3.8.5
Marc Wrobel
marcwrobel
marc.wrobel@gmail.com
http://www.marcwrobel.fr/
...
```
All inherited information can be overridden, especially properties (take a look at this
[parent POM](pom.xml) for an exhaustive list). Remember you can display the effective POM
using [`maven-help-plugin`](https://maven.apache.org/plugins/maven-help-plugin/effective-pom-mojo.html)
in your project:
```bash
mvn help:effective-pom
```
You must also declare a [`maven-versions-rules.xml`](/maven-versions-rules.xml) file at the root of
your project.
## What's included?
- default Maven configuration for `organization`, `developers`, `scm`, `issueManagement`,
`ciManagement`, `distributionManagement` and `defaultGoal`,
- dependency management for dozens of libraries
([Apache Commons](https://commons.apache.org), [java extensions](https://www.jcp.org/),
[Groovy](http://www.groovy-lang.org/), [Spring](https://spring.io/),
[Hibernate](https://hibernate.org/) to name a few),
- plugin management for
[cyclonedx-maven-plugin](https://github.com/CycloneDX/cyclonedx-maven-plugin)
(the configuration should work in most situations),
- plugin management for
[flatten-maven-plugin](https://www.mojohaus.org/flatten-maven-plugin/)
([CI-friendly configuration](http://maven.apache.org/maven-ci-friendly.html)),
- plugin management for
[git-commit-id-plugin](https://github.com/git-commit-id/maven-git-commit-id-plugin)
(provided by `spring-boot-starter-parent` but non-verbose),
- plugin management for [jacoco-maven-plugin](https://www.jacoco.org/jacoco/)
(activation),
- plugin management for
[jib-maven-plugin](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin)
(default `from` and `to`),
- plugin management for
[kotlin-maven-plugin](https://kotlinlang.org/docs/reference/using-maven.html)
(provided by `spring-boot-starter-parent`),
- plugin management for
[maven-compiler-plugin](https://maven.apache.org/plugins/maven-compiler-plugin/)
(provided by `spring-boot-starter-parent`),
- plugin management for
[maven-enforcer-plugin](https://maven.apache.org/enforcer/maven-enforcer-plugin/)
(activation and configuration rules for Java and Maven versions),
- plugin management for
[maven-failsafe-plugin](http://maven.apache.org/surefire/maven-failsafe-plugin/)
(provided by `spring-boot-starter-parent`),
- plugin management for
[maven-release-plugin](https://maven.apache.org/maven-release/maven-release-plugin/)
(change `tagNameFormat`).
- plugin management for
[spotless-maven-plugin](https://github.com/diffplug/spotless/blob/main/plugin-maven/README.md)
(binding to the verify phase),
- plugin management and project configuration for
[sonar-maven-plugin](https://sonarsource.github.io/sonar-scanner-maven/),
- plugin management and project configuration for
[versions-maven-plugin](https://www.mojohaus.org/versions-maven-plugin/),
- plugin management for
[spring-boot-maven-plugin](https://docs.spring.io/spring-boot/docs/current/maven-plugin/index.html)
(provided by `spring-boot-starter-parent`).
- a `release` profile, activated automatically during release with `maven-release-plugin`,
which triggers :
- sources attachment with
[maven-source-plugin](https://maven.apache.org/plugins/maven-source-plugin/),
- javadoc attachment with
[[maven-javadoc-plugin](http://maven.apache.org/plugins/maven-javadoc-plugin/),
- a PGP signature with
[maven-gpg-plugin](https://maven.apache.org/plugins/maven-gpg-plugin/).
- an `analyze` profile, that must be activated manually, which triggers the `jacoco` agent
during unit or integration tests in order to calculate code coverage for SonarQube.
The `maven-enforcer-plugin` is the only plugin activated by default.
Take a look at the [POM](/pom.xml) for more information.
## Why `spring-boot-starter-parent`?
This POM is inheriting from
[`spring-boot-starter-parent`](https://spring.io/projects/spring-boot) in order to:
- take advantage of the Spring Boot team's work on dependencies (with
`spring-boot-dependencies`);
- benefit from some good plugin management defaults.
Because this POM is relying so much on `spring-boot-starter-parent` its major and minor
versions are also following those of Spring Boot.
## Contribute
Take a look at the [contribution guide](CONTRIBUTING.md).
## Need help ?
Start a [discussion](https://github.com/marcwrobel/parent/discussions),
raise an [issue](https://github.com/marcwrobel/parent/issues?sort=created&direction=desc&state=open)
or contribute with [a pull-request](https://github.com/marcwrobel/parent/pulls) (please take a look at the
[contribution guide](CONTRIBUTING.md) before).
And for the things that must be kept private (**only** !), such as [security issues](/SECURITY.md), email me at
[marc.wrobel@gmail.com](mailto:marc.wrobel@gmail.com).