{"id":18810398,"url":"https://github.com/absaoss/root-pom","last_synced_at":"2026-03-19T06:31:41.006Z","repository":{"id":46749367,"uuid":"376752478","full_name":"AbsaOSS/root-pom","owner":"AbsaOSS","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-21T16:44:59.000Z","size":37,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-06-21T17:36:36.574Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbsaOSS.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,"zenodo":null}},"created_at":"2021-06-14T08:19:51.000Z","updated_at":"2025-06-21T16:45:01.000Z","dependencies_parsed_at":"2025-06-05T22:20:16.175Z","dependency_job_id":null,"html_url":"https://github.com/AbsaOSS/root-pom","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/AbsaOSS/root-pom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Froot-pom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Froot-pom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Froot-pom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Froot-pom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbsaOSS","download_url":"https://codeload.github.com/AbsaOSS/root-pom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Froot-pom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28803641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T03:44:14.111Z","status":"ssl_error","status_checked_at":"2026-01-27T03:43:33.507Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-07T23:20:05.171Z","updated_at":"2026-01-27T05:02:06.284Z","avatar_url":"https://github.com/AbsaOSS.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Root POM for ABSA OSS repos\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/za.co.absa/root-pom/badge.svg)](https://search.maven.org/search?q=g:za.co.absa%20AND%20a:root-pom)\n\nThe root POM defines a set of profiles and properties that implement conventions on how the ABSA OSS Maven based projects are built, released,\npublished, checked for license or otherwise treated in the CI/CD pipelines.\n\nThe profiles are designed to cover independent concerns, so they can be used separately or combined in a single Maven run.\n\nProfiles should be activated using conditional approach by specifying `-D` argument. (Don't use `-P`)\n\nExample:\n```shell\nmvn ... -Dmy-profile\n```\n\n## Setup\n\nConfigure your project POM\n\n```xml\n\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"\u003e\n\n    \u003cparent\u003e\n        \u003cgroupId\u003eza.co.absa\u003c/groupId\u003e\n        \u003cartifactId\u003eroot-pom\u003c/artifactId\u003e\n        \u003cversion\u003ex.y.z\u003c/version\u003e\n    \u003c/parent\u003e\n\n    \u003cscm\u003e\n        \u003curl\u003ehttps://YOUR_PROJECT_URL_HERE\u003c/url\u003e\n        \u003cconnection\u003e${scm.connection}\u003c/connection\u003e\n        \u003cdeveloperConnection\u003e${scm.developerConnection}\u003c/developerConnection\u003e\n        \u003ctag\u003eHEAD\u003c/tag\u003e\n    \u003c/scm\u003e\n\n\u003c/project\u003e\n```\n\n## Usage\n\n### Create a project release\n\nThe release is done with the help of standard Maven release plugin configured in the `release` profile.\n(We only use `release:prepare` goal, never `release:perform` that is substituted with other dedicated profiles).\n\n```shell\nmvn release:prepare -Drelease -Dscm.developerConnection=scm:git:https://github.com/AbsaOSS/...\n```\n\nThe SCM credentials can be set up either in the command line `-Dusername=... -Dpassword=...`, or via the `\u003cserver\u003e` tag in the Maven `settings.xml`\n\n```xml\n\n\u003csettings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n          xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd\"\u003e\n\n    \u003cservers\u003e\n        \u003cserver\u003e\n            \u003cid\u003eabsaoss-scm\u003c/id\u003e\n            \u003cusername\u003e...\u003c/username\u003e\n            \u003cpassword\u003e...\u003c/password\u003e\n        \u003c/server\u003e\n    \u003c/servers\u003e\n\n\u003c/settings\u003e\n```\n\nThis will run all tests, create `release/x.y.z` tag, increment the development version and push everything into the given SCM repo\n\nSee [Maven release plugin](https://maven.apache.org/maven-release/maven-release-plugin/usage.html) for details.\n\n### Check for license headers\n\nSimply activate `license-check` profile on any Maven phase.\n\n```shell\nmvn validate -Dlicense-check\n```  \n\n### Measure code coverage\n\nSimply activate `code-coverage` profile on verify Maven phase.\n\n```shell\nmvn verify -Dcode-coverage\n```  \n\nSee [Maven RAT plugin](https://creadur.apache.org/rat/apache-rat-plugin/index.html)\n\n### Deploy to OSSRH (Maven Central)\n\nConfigure **Maven Central Portal** credentials and **GPG passphrase** in the Maven `settings.xml`\n\n```xml\n\n\u003csettings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n          xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd\"\u003e\n\n    \u003cservers\u003e\n        \u003cserver\u003e\n            \u003cid\u003eossrh\u003c/id\u003e\n            \u003c!-- See https://central.sonatype.org/publish/generate-portal-token/ --\u003e\n            \u003cusername\u003e...\u003c/username\u003e\n            \u003cpassword\u003e...\u003c/password\u003e\n        \u003c/server\u003e\n        \u003cserver\u003e\n            \u003cid\u003egpg.passphrase\u003c/id\u003e\n            \u003cpassphrase\u003e...\u003c/passphrase\u003e\n        \u003c/server\u003e\n    \u003c/servers\u003e\n\n\u003c/settings\u003e\n```\n\nImport a GPG key to sign the artifacts. If you have several keys imported, the default one will be used.\n\n```shell\ngpg --import ...\n```\n\nThen run Maven `deploy` phase with the `ossrh` profile enabled\n\n```shell\nmvn deploy -DskipTests -Dossrh\n```\n\nThe staging repository will be released and closed automatically.\n\n### Build Docker images\n\nUsing the following template, create a `Dockerfile` in a module for which you want to build a Docker image\n\n```dockerfile\n\nFROM base_docker_image_coordinates\n\n# legal stuff\nLABEL \\\n    vendor=\"ABSA\" \\\n    copyright=\"2021 ABSA Group Limited\" \\\n    license=\"Apache License, version 2.0\"\n    \n# These arguments are propagated from the corresponding Maven properties.\n# Uncomment what you need.\n#\n# ARG PROJECT_NAME\n# ARG PROJECT_GROUP_ID\n# ARG PROJECT_ARTIFACT_ID\n# ARG PROJECT_VERSION\n# ARG PROJECT_BASEDIR\n# ARG PROJECT_BUILD_DIRECTORY\n# ARG PROJECT_BUILD_FINAL_NAME    \n\n# The rest of your Dockerfile here\n\n```\n\nIn the corresponding `pom.xml`, specify the Docker image name and enable the dockerfile Maven plugin by setting the `\u003cskip\u003e` property to `false`\n\n```xml\n\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"\u003e\n\n    \u003cproperties\u003e\n        \u003cdocker.imageName\u003emy-docker-image\u003c/docker.imageName\u003e\n    \u003c/properties\u003e\n\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eio.fabric8\u003c/groupId\u003e\n                \u003cartifactId\u003edocker-maven-plugin\u003c/artifactId\u003e\n                \u003cconfiguration\u003e\n                    \u003cskip\u003efalse\u003c/skip\u003e\n                \u003c/configuration\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n\n\u003c/project\u003e\n```\n\nTo build the Docker image execute Maven `install` phase with the `docker` profile enabled. You also need to specify the\nmandatory `docker.repositoryUrl`. It serves as the image name prefix, and is mandatory even if you don't want to push the image in any remote\nrepo.\n\n```shell\nmvn install -Ddocker -Ddocker.repositoryUrl=foo\n```\n\nThe above example will create a Docker image with the name `foo/my-docker-image` and two tags - `latest` and `x.y.z` (corresponding the POM version)\n\n##### Push the image to a remote repository\nSpecify `docker.repositoryUrl` property accordingly and execute Maven `deploy` phase.\n\nThe example command below with create an image and push into the AbsaOSS space on the Docker Hub.\n```shell\nmvn deploy -Ddocker -Ddocker.repositoryUrl=docker.io/absaoss\n```\n\n##### Tweaking image names and tags\n\nSee the `\u003cdocker.*\u003e` properties in the root `pom.xml` for details. All those parameters can be set/overwritten in the command line.\n\n```shell\nmvn ... -Dxxx.yyy=zzz\n```\n\n## License\n\n---\n\n    Copyright 2021 ABSA Group Limited\n    \n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n    \n        http://www.apache.org/licenses/LICENSE-2.0\n    \n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabsaoss%2Froot-pom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabsaoss%2Froot-pom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabsaoss%2Froot-pom/lists"}