{"id":18367790,"url":"https://github.com/gantsign/maven-parent-poms","last_synced_at":"2025-04-06T17:31:33.438Z","repository":{"id":35727967,"uuid":"199194782","full_name":"gantsign/maven-parent-poms","owner":"gantsign","description":"Parent Maven POMs with best practice configuration","archived":false,"fork":false,"pushed_at":"2024-06-01T21:09:03.000Z","size":796,"stargazers_count":13,"open_issues_count":10,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-22T03:51:13.805Z","etag":null,"topics":["java","kotlin","maven"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gantsign.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-27T17:26:45.000Z","updated_at":"2024-02-01T15:33:40.000Z","dependencies_parsed_at":"2023-02-12T12:46:04.130Z","dependency_job_id":"d4a0ea5e-4623-41dd-b6af-ce48f368acdd","html_url":"https://github.com/gantsign/maven-parent-poms","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantsign%2Fmaven-parent-poms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantsign%2Fmaven-parent-poms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantsign%2Fmaven-parent-poms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantsign%2Fmaven-parent-poms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gantsign","download_url":"https://codeload.github.com/gantsign/maven-parent-poms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247522289,"owners_count":20952518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","kotlin","maven"],"created_at":"2024-11-05T23:23:26.016Z","updated_at":"2025-04-06T17:31:32.626Z","avatar_url":"https://github.com/gantsign.png","language":"Java","funding_links":[],"categories":["java"],"sub_categories":[],"readme":"# GantSign Maven Parent POMs\n\n[![Release](https://github.com/gantsign/maven-parent-poms/workflows/Build/badge.svg)](https://github.com/gantsign/maven-parent-poms/actions?query=workflow%3ABuild)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.gantsign.parent/common-parent/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.gantsign.parent/common-parent)\n[![License](https://img.shields.io/github/license/gantsign/maven-parent-poms)](https://github.com/gantsign/maven-parent-poms/blob/master/LICENSE)\n\nParent Maven POMs with best practice configuration. The POMs are for general use and are not\ncompany-specific.\n\n## Java 8\n\nDue to some of the Maven plugins we use requiring Java 11 to run, you need to\nbuild on Java 11 to compile for Java 8.\n\nAdd the following to your POM:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cparent\u003e\n    \u003cgroupId\u003ecom.github.gantsign.parent\u003c/groupId\u003e\n    \u003cartifactId\u003ejava-parent\u003c/artifactId\u003e\n    \u003cversion\u003eINSERT VERSION HERE\u003c/version\u003e\n    \u003crelativePath /\u003e\n  \u003c/parent\u003e\n  ...\n  \u003cproperties\u003e\n    \u003cjava.require.version\u003e11\u003c/java.require.version\u003e\n    \u003cjava.target.version\u003e8\u003c/java.target.version\u003e\n  \u003c/properties\u003e\n  ...\n  \u003c!-- Don't inherit license from parent POM --\u003e\n  \u003clicenses\u003e\n    \u003clicense\u003e\n      \u003cname\u003eTODO\u003c/name\u003e\n    \u003c/license\u003e\n  \u003c/licenses\u003e\n\n  \u003c!-- Don't inherit developers from parent POM --\u003e\n  \u003cdevelopers\u003e\n    \u003cdeveloper\u003e\n      \u003cname\u003eTODO\u003c/name\u003e\n    \u003c/developer\u003e\n  \u003c/developers\u003e\n  ...\n\u003c/project\u003e\n```\n\n## Java 11\n\nFor Java 11 projects add the following to your POM:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cparent\u003e\n    \u003cgroupId\u003ecom.github.gantsign.parent\u003c/groupId\u003e\n    \u003cartifactId\u003ejava-parent\u003c/artifactId\u003e\n    \u003cversion\u003eINSERT VERSION HERE\u003c/version\u003e\n    \u003crelativePath /\u003e\n  \u003c/parent\u003e\n  ...\n  \u003cproperties\u003e\n    \u003cjava.target.version\u003e11\u003c/java.target.version\u003e\n  \u003c/properties\u003e\n  ...\n  \u003c!-- Don't inherit license from parent POM --\u003e\n  \u003clicenses\u003e\n    \u003clicense\u003e\n      \u003cname\u003eTODO\u003c/name\u003e\n    \u003c/license\u003e\n  \u003c/licenses\u003e\n\n  \u003c!-- Don't inherit developers from parent POM --\u003e\n  \u003cdevelopers\u003e\n    \u003cdeveloper\u003e\n      \u003cname\u003eTODO\u003c/name\u003e\n    \u003c/developer\u003e\n  \u003c/developers\u003e\n  ...\n\u003c/project\u003e\n```\n\n## Kotlin\n\nFor Kotlin projects add the following to your POM:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cparent\u003e\n    \u003cgroupId\u003ecom.github.gantsign.parent\u003c/groupId\u003e\n    \u003cartifactId\u003ekotlin-parent\u003c/artifactId\u003e\n    \u003cversion\u003eINSERT VERSION HERE\u003c/version\u003e\n    \u003crelativePath /\u003e\n  \u003c/parent\u003e\n  ...\n  \u003cproperties\u003e\n    \u003cjava.require.version\u003e[${java.target.version},9)\u003c/java.require.version\u003e\n    \u003cjava.target.version\u003e1.8\u003c/java.target.version\u003e\n  \u003c/properties\u003e\n  ...\n  \u003c!-- Don't inherit license from parent POM --\u003e\n  \u003clicenses\u003e\n    \u003clicense\u003e\n      \u003cname\u003eTODO\u003c/name\u003e\n    \u003c/license\u003e\n  \u003c/licenses\u003e\n\n  \u003c!-- Don't inherit developers from parent POM --\u003e\n  \u003cdevelopers\u003e\n    \u003cdeveloper\u003e\n      \u003cname\u003eTODO\u003c/name\u003e\n    \u003c/developer\u003e\n  \u003c/developers\u003e\n  ...\n\u003c/project\u003e\n```\n\n## Features\n\n### Project Lombok support\n\nYou can use Lombok to reduce the boilerplate in your Java projects. To enable Lombok you need to\nadd Lombok as a provided dependency and add it to the `annotationProcessorPaths` in your `pom.xml`\nas follows:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cdependencies\u003e\n    ...\n    \u003cdependency\u003e\n      \u003cgroupId\u003eorg.projectlombok\u003c/groupId\u003e\n      \u003cartifactId\u003elombok\u003c/artifactId\u003e\n      \u003cscope\u003eprovided\u003c/scope\u003e\n    \u003c/dependency\u003e\n    ...\n  \u003c/dependencies\u003e\n\n  \u003cbuild\u003e\n    \u003cplugins\u003e\n      ...\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n        \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n        \u003cconfiguration\u003e\n          \u003cannotationProcessorPaths combine.children=\"append\"\u003e\n            \u003cpath\u003e\n              \u003cgroupId\u003eorg.projectlombok\u003c/groupId\u003e\n              \u003cartifactId\u003elombok\u003c/artifactId\u003e\n              \u003cversion\u003e${lombok.version}\u003c/version\u003e\n            \u003c/path\u003e\n          \u003c/annotationProcessorPaths\u003e\n        \u003c/configuration\u003e\n      \u003c/plugin\u003e\n      ...\n    \u003c/plugins\u003e\n  \u003c/build\u003e\n  ...\n\u003c/project\u003e\n```\n\nYou should also add a `lombok.config` file to the root of your project, the following config is\na good start:\n\n```lombok.config\n# This is the root config for this project\nconfig.stopBubbling = true\n\n# No need for test coverage on Lombok generated code with JaCoCo\nlombok.addLombokGeneratedAnnotation = true\n```\n\n### Reproducible builds\n\nThe builds are made reproducible using the\n[Reproducible Build Maven Plugin](https://github.com/Zlika/reproducible-build-maven-plugin). Making\nyour builds byte-for-byte reproducible helps various tools (e.g. Docker image layers) save on\nstorage if an artifact hasn't changed. It also provides a way of checking if an artifact has been\ntampered with.\n\n### Flattened POMs\n\nThe installed/deployed POMs are flattened using the\n[Flatten Maven Plugin](https://www.mojohaus.org/flatten-maven-plugin). This installs/deploys a\nversion of the POM optimised for use as a dependency with any parent POMs inlined and configuration\nonly required during the build removed. This feature has to be enabled by adding the following to\nyour POM:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cbuild\u003e\n    \u003cplugins\u003e\n      ...\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.codehaus.mojo\u003c/groupId\u003e\n        \u003cartifactId\u003eflatten-maven-plugin\u003c/artifactId\u003e\n      \u003c/plugin\u003e\n      ...\n    \u003c/plugins\u003e\n  \u003c/build\u003e\n  ...\n\u003c/project\u003e\n```\n\n### Code auto-formatting\n\nThis project uses opinionated formatters for Java and Kotlin too avoid\n[bikeshedding](https://en.wiktionary.org/wiki/bikeshedding). The Java parent POM uses the\n[fmt-maven-plugin](https://github.com/coveooss/fmt-maven-plugin) that uses\n[google-java-format](https://github.com/google/google-java-format) to format the code. The Kotlin\nparent POM uses the [ktlint-maven-plugin](https://github.com/gantsign/ktlint-maven-plugin) that uses\n[ktlint](https://github.com/pinterest/ktlint) to format the code. The POMs are formatted using the\n[Sortpom Maven Plugin](https://github.com/Ekryd/sortpom).\n\n### Code linting\n\nWhile auto-formatting can fix a lot, it can't fix every style issue for you. This project uses\nlinters to inform you of issues that need manual attention. The Java parent POM uses the\n[maven-checkstyle-plugin](https://maven.apache.org/plugins/maven-checkstyle-plugin/) that uses\n[Checkstyle](https://checkstyle.sourceforge.io) to lint the code. The Kotlin parent POM uses the\n[ktlint-maven-plugin](https://github.com/gantsign/ktlint-maven-plugin) that uses\n[ktlint](https://github.com/pinterest/ktlint) to lint the code.\n\n### License headers\n\nThis project includes the\n[License Maven Plugin](https://www.mojohaus.org/license-maven-plugin/usage.html) to add license\nheaders to your files. To use this plugin you need to configure it e.g.:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cbuild\u003e\n    \u003cplugins\u003e\n      ...\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.codehaus.mojo\u003c/groupId\u003e\n        \u003cartifactId\u003elicense-maven-plugin\u003c/artifactId\u003e\n        \u003cconfiguration\u003e\n          \u003cprojectName\u003eTODO\u003c/projectName\u003e\n          \u003c!-- For a list of standard license names run: mvn -N license:license-list --\u003e\n          \u003c!-- For proprietary licenses see\n               https://www.mojohaus.org/license-maven-plugin/examples/example-add-license.html --\u003e\n          \u003clicenseName\u003eTODO e.g. apache_v2\u003c/licenseName\u003e\n          \u003cextraExtensions\u003e\n            \u003ckt\u003ejava\u003c/kt\u003e\n            \u003ckts\u003ejava\u003c/kts\u003e\n          \u003c/extraExtensions\u003e\n        \u003c/configuration\u003e\n        \u003cexecutions\u003e\n          \u003cexecution\u003e\n            \u003cid\u003econfig-files\u003c/id\u003e\n            \u003cgoals\u003e\n              \u003cgoal\u003eupdate-file-header\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cphase\u003eprocess-sources\u003c/phase\u003e\n            \u003cconfiguration\u003e\n              \u003croots\u003e${basedir}\u003c/roots\u003e\n              \u003cincludes\u003e.editorconfig,.gitattributes,.travis.yml,pom.xml\u003c/includes\u003e\n              \u003cextraExtensions\u003e\n                \u003ceditorconfig\u003eproperties\u003c/editorconfig\u003e\n                \u003cgitattributes\u003eproperties\u003c/gitattributes\u003e\n                \u003cyml\u003eproperties\u003c/yml\u003e\n              \u003c/extraExtensions\u003e\n            \u003c/configuration\u003e\n          \u003c/execution\u003e\n          \u003cexecution\u003e\n            \u003cid\u003esources\u003c/id\u003e\n            \u003cgoals\u003e\n              \u003cgoal\u003eupdate-file-header\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cphase\u003eprocess-sources\u003c/phase\u003e\n          \u003c/execution\u003e\n        \u003c/executions\u003e\n      \u003c/plugin\u003e\n      ...\n    \u003c/plugins\u003e\n  \u003c/build\u003e\n\n  \u003c!-- The inception year is included in the licence header as the copyright year --\u003e\n  \u003cinceptionYear\u003e2018\u003c/inceptionYear\u003e\n\n  \u003c!-- The organization name is included in the licence header as the copyright owner --\u003e\n  \u003corganization\u003e\n    \u003cname\u003eTODO e.g. ACME LTD\u003c/name\u003e\n  \u003c/organization\u003e\n\n  \u003c!-- This is the license metadata for the Maven project and should match the license of used\n       with the license-maven-plugin. --\u003e\n  \u003clicenses\u003e\n    \u003clicense\u003e\n      \u003cname\u003eTODO e.g. Apache License, Version 2.0\u003c/name\u003e\n      \u003curl\u003eTODO e.g. https://opensource.org/licenses/Apache-2.0\u003c/url\u003e\n      \u003cdistribution\u003erepo\u003c/distribution\u003e\n      \u003ccomments\u003eTODO e.g. A business-friendly OSS license\u003c/comments\u003e\n    \u003c/license\u003e\n  \u003c/licenses\u003e\n\u003c/project\u003e\n```\n\n### Dependency analysis\n\nIt's quite easy to put a dependency in the wrong scope or to leave in a dependency after all usages\nhave been removed. This can slow down your builds and inflate the size of your deployables. It's\nalso common to rely on classes from your transitive dependencies that could disappear when the\ndependency changes. So this project uses the\n[Maven Dependency Plugin](https://maven.apache.org/plugins/maven-dependency-plugin) to check for\nunused (possibly wrong scope) and undeclared dependencies.\n\n### Maven Enforcer\n\nOut of the box Maven builds can be a bit brittle.\n\n* If you don't specify the plugin version Maven will default to the latest version. If the latest\n  version is buggy or the API breaks compatibility then your build breaks. So it's best to use Maven\n  Enforcer to require plugin versions be specified.\n\n* Maven has a bonkers approach to picking between multiple dependency versions. It uses the nearest\n  version in the dependency tree. This approach tends to leave you using buggy older dependency\n  versions. It also possible that by adding a dependency you may inadvertently downgrade the version\n  of another dependency. So it's best to use Maven Enforcer to require the dependency version to be\n  specified if there's more than one version and that this be the highest version. This is achieved\n  by specifying the dependency version in the `dependencyManagement` section.\n\n* Maven quite happily lets you build with dependencies containing duplicate classes (unless you're\n  using Java 9+ modules). Maven has no notion of dependency substitutions e.g. `log4j-over-slf4j`\n  and is poor at handling dependencies that change coordinates, so duplicate classes are common.\n  It's entirely possible to use one class version in your IDE, one for the build and another at\n  runtime. This compromises your tests and can make troubleshooting bugs really difficult. So it's\n  best to use Maven Enforcer to ban duplicate classes. This typically requires you to exclude the\n  conflicting transitive dependencies e.g. `log4j`.\n\n### Docker\n\nThis project includes the\n[Jib Maven Plugin](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin) for\nbuilding Docker images of your applications. To use this plugin you need to configure it and\nactivate the appropriate Maven profile e.g.:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cproperties\u003e\n    \u003cdocker.image\u003eTODO e.g. gcr.io/my-gcp-project/my-app\u003c/docker.image\u003e\n  \u003c/properties\u003e\n  ...\n\u003c/project\u003e\n```\n\nTo build your application to your local Docker daemon activate the `docker-local` profile e.g:\n\n```bash\nmvn clean install -P docker-local\n```\n\nTo build your application to your remote Docker registry activate the `docker-registry` profile e.g:\n\n```bash\nmvn clean install -P docker-registry\n```\n\n### Security scanning\n\nThis project includes the [SpotBugs Maven Plugin](https://spotbugs.github.io/spotbugs-maven-plugin)\nwith the [Find Security Bugs](https://find-sec-bugs.github.io) plugin for performing static analysis\non your code. The static analysis can be quite time consuming so it's not run by default.\n\nTo add the necessary configuration to your project, run the following from your project root\ndirectory:\n\n```bash\nmkdir -p config/spotbugs\n\necho '\u003cFindBugsFilter\u003e\n  \u003cMatch\u003e\n    \u003cBug category=\"SECURITY\"/\u003e\n  \u003c/Match\u003e\n\u003c/FindBugsFilter\u003e' \u003e config/spotbugs/security-include.xml\n\necho '\u003cFindBugsFilter\u003e\n\u003c/FindBugsFilter\u003e' \u003e config/spotbugs/security-exclude.xml\n\n```\n\nTo run the security scan run the following from the project root:\n\n```bash\nmvn clean install\nmvn spotbugs:spotbugs -P find-sec-bugs\n```\n\nTo view the results run the following from each Maven module directory:\n\n```bash\nmvn spotbugs:gui -P find-sec-bugs\n```\n\n### Deployment profiles\n\n#### sign-artifacts\n\nTo sign artifacts first you need a GPG key, if you're using Travis CI you can follow\n[this guide](http://www.debonair.io/post/maven-cd/).\n\nOnce you have your GPG key you need to set the following two environment variables:\n\n* `GPG_KEY_NAME` e.g. name@example.com\n* `GPG_PASSPHRASE`\n\nThen activate the `sign-artifacts` profile when you deploy your artifacts e.g.:\n\n```bash\nmvn deploy -P sign-artifacts\n```\n\n#### ossrh-deploy\n\nThe process of deploying to Sonatype OSSRH (OSS Repository Hosting) is a bit involved so play close\nattention to [this guide](https://central.sonatype.org/pages/ossrh-guide.html).\n\nYou need to specify the username and token for the `ossrh` server in your Maven `settings.xml`. This\nexample uses environment variables, which is generally the easiest approach for CI servers:\n\n```xml\n\u003csettings\u003e\n  ...\n  \u003cservers\u003e\n    ...\n    \u003cserver\u003e\n      \u003cid\u003eossrh\u003c/id\u003e\n      \u003cusername\u003e${env.OSSRH_USER}\u003c/username\u003e\n      \u003cpassword\u003e${env.OSSRH_TOKEN}\u003c/password\u003e\n    \u003c/server\u003e\n    ...\n  \u003c/servers\u003e\n  ...\n\u003c/settings\u003e\n```\n\nOnce you've satisfied all the requirements you can deploy to OSSRH by activating the `ossrh-deploy`\nprofile e.g.:\n\n```bash\nmvn deploy -P sign-artifacts,ossrh-deploy\n```\n\n#### gh-pages\n\nTo deploy your Maven site to the `gh-pages` branch of your project repository, first you need to\nconfigure the `site` in the `distributionManagement` section of your POM:\n\n```xml\n\u003cproject\u003e\n  ...\n  \u003cdistributionManagement\u003e\n    ...\n    \u003csite\u003e\n      \u003cid\u003egithub-pages-site\u003c/id\u003e\n      \u003cname\u003eDeployment through Apache Maven SCM Publish Plugin\u003c/name\u003e\n      \u003curl\u003escm:git:https://github.com/TODO_OWNER/TODO_REPO.git\u003c/url\u003e\n    \u003c/site\u003e\n    ...\n  \u003c/distributionManagement\u003e\n  ...\n\u003c/project\u003e\n```\n\nNext you need to set the username and access token for the `github` server in your Maven\n`settings.xml`. You can create a token from the\n[Personal access tokens](https://github.com/settings/tokens) page on the users GitHub account. The\ntoken needs to be granted write permission to the repository. This example uses environment\nvariables, which is generally the easiest approach for CI servers:\n\n```xml\n\u003csettings\u003e\n  ...\n  \u003cservers\u003e\n    ...\n    \u003cserver\u003e\n      \u003cid\u003egithub\u003c/id\u003e\n      \u003cusername\u003e${env.GITHUB_USER}\u003c/username\u003e\n      \u003cpassword\u003e${env.GITHUB_OAUTH2TOKEN}\u003c/password\u003e\n    \u003c/server\u003e\n    ...\n  \u003c/servers\u003e\n  ...\n\u003c/settings\u003e\n```\n\nDeploying the site is a three stage process:\n\n```bash\n# Build the site\nmvn site\n\n# Prepare the site for upload\nmvn site:stage\n\n# Upload the site\nmvn scm-publish:publish-scm -P gh-pages\n```\n\n### Managed plugins\n\nThe following plugins have their version specified so builds are reproducible:\n\n* com.coveo:fmt-maven-plugin\n* com.github.ekryd.sortpom:sortpom-maven-plugin\n* com.github.gantsign.maven:ktlint-maven-plugin\n* com.github.spotbugs:spotbugs-maven-plugin\n* com.google.cloud.tools:jib-maven-plugin\n* io.github.zlika:reproducible-build-maven-plugin\n* org.apache.maven.plugins:maven-checkstyle-plugin\n* org.apache.maven.plugins:maven-clean-plugin\n* org.apache.maven.plugins:maven-compiler-plugin\n* org.apache.maven.plugins:maven-dependency-plugin\n* org.apache.maven.plugins:maven-deploy-plugin\n* org.apache.maven.plugins:maven-enforcer-plugin\n* org.apache.maven.plugins:maven-failsafe-plugin\n* org.apache.maven.plugins:maven-gpg-plugin\n* org.apache.maven.plugins:maven-install-plugin\n* org.apache.maven.plugins:maven-invoker-plugin\n* org.apache.maven.plugins:maven-jar-plugin\n* org.apache.maven.plugins:maven-javadoc-plugin\n* org.apache.maven.plugins:maven-jdeps-plugin\n* org.apache.maven.plugins:maven-jxr-plugin\n* org.apache.maven.plugins:maven-plugin-plugin\n* org.apache.maven.plugins:maven-project-info-reports-plugin\n* org.apache.maven.plugins:maven-release-plugin\n* org.apache.maven.plugins:maven-resources-plugin\n* org.apache.maven.plugins:maven-scm-publish-plugin\n* org.apache.maven.plugins:maven-shade-plugin\n* org.apache.maven.plugins:maven-site-plugin\n* org.apache.maven.plugins:maven-source-plugin\n* org.apache.maven.plugins:maven-surefire-plugin\n* org.apache.maven.plugins:maven-surefire-report-plugin\n* org.codehaus.mojo:build-helper-maven-plugin\n* org.codehaus.mojo:flatten-maven-plugin\n* org.codehaus.mojo:jdepend-maven-plugin\n* org.codehaus.mojo:license-maven-plugin\n* org.jacoco:jacoco-maven-plugin\n* org.jetbrains.kotlin:kotlin-maven-plugin\n* org.sonatype.plugins:nexus-staging-maven-plugin\n\n### Managed dependencies\n\nThe following dependencies have their version specified for convenience:\n\n* com.google.code.findbugs:jsr305\n* com.google.guava:guava\n* io.github.microutils:kotlin-logging-jvm\n* org.jetbrains:annotations\n* org.jetbrains.kotlin:kotlin-compiler-embeddable\n* org.jetbrains.kotlin:kotlin-reflect\n* org.jetbrains.kotlin:kotlin-stdlib\n* org.jetbrains.kotlin:kotlin-stdlib-common\n* org.jetbrains.kotlin:kotlin-stdlib-jdk8\n* org.slf4j:jcl-over-slf4j\n* org.slf4j:jul-to-slf4j\n* org.slf4j:log4j-over-slf4j\n* org.slf4j:slf4j-api\n* org.slf4j:slf4j-simple\n* org.projectlombok:lombok\n* ch.qos.logback:logback-classic\n* io.mockk:mockk\n* io.mockk:mockk-dsl-jvm\n* junit:junit\n* org.assertj:assertj-core\n* org.assertj:assertj-guava\n* org.jetbrains.kotlin:kotlin-test\n* org.jetbrains.kotlin:kotlin-test-common\n* org.jetbrains.kotlin:kotlin-test-junit\n* org.junit.jupiter:junit-jupiter-api\n* org.junit.jupiter:junit-jupiter-engine\n* org.mockito:mockito-core\n* org.mockito:mockito-junit-jupiter\n\n\n## License\n\nThis software is licensed under the terms in the file named \"LICENSE\" in the\nroot directory of this project. This project has dependencies that are under\ndifferent licenses.\n\n## Author Information\n\nJohn Freeman\n\nGantSign Ltd.\nCompany No. 06109112 (registered in England)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgantsign%2Fmaven-parent-poms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgantsign%2Fmaven-parent-poms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgantsign%2Fmaven-parent-poms/lists"}