{"id":16014701,"url":"https://github.com/pmonks/tools-pom","last_synced_at":"2025-07-25T02:33:54.004Z","repository":{"id":40400176,"uuid":"421127879","full_name":"pmonks/tools-pom","owner":"pmonks","description":"A Clojure tools.build task library related to the generation of comprehensive pom.xml files.","archived":false,"fork":false,"pushed_at":"2025-06-18T23:25:31.000Z","size":150,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2025-06-25T09:48:39.503Z","etag":null,"topics":["clojure","pom-xml","tools-build"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pmonks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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-10-25T17:49:24.000Z","updated_at":"2025-06-18T23:25:34.000Z","dependencies_parsed_at":"2023-01-31T07:15:51.283Z","dependency_job_id":"5e59bea0-44a1-4a5b-9248-2325d7af84e4","html_url":"https://github.com/pmonks/tools-pom","commit_stats":{"total_commits":119,"total_committers":1,"mean_commits":119.0,"dds":0.0,"last_synced_commit":"917cc342aaf2d00004cfab612295f2b64f462c69"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/pmonks/tools-pom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmonks%2Ftools-pom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmonks%2Ftools-pom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmonks%2Ftools-pom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmonks%2Ftools-pom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmonks","download_url":"https://codeload.github.com/pmonks/tools-pom/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmonks%2Ftools-pom/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266944354,"owners_count":24010486,"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","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["clojure","pom-xml","tools-build"],"created_at":"2024-10-08T15:04:48.783Z","updated_at":"2025-07-25T02:33:53.994Z","avatar_url":"https://github.com/pmonks.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tools-pom\n\n[![CI](https://github.com/pmonks/tools-pom/actions/workflows/ci.yml/badge.svg?branch=dev)](https://github.com/pmonks/tools-pom/actions?query=workflow%3ACI+branch%3Adev)\n[![Dependencies](https://github.com/pmonks/tools-pom/actions/workflows/dependencies.yml/badge.svg?branch=dev)](https://github.com/pmonks/tools-pom/actions?query=workflow%3Adependencies+branch%3Adev)\n\u003cbr/\u003e\n[![Latest Version](https://img.shields.io/clojars/v/com.github.pmonks/tools-pom)](https://clojars.org/com.github.pmonks/tools-pom/)\n[![License](https://img.shields.io/github/license/pmonks/tools-pom.svg)](https://github.com/pmonks/tools-pom/blob/release/LICENSE)\n[![Open Issues](https://img.shields.io/github/issues/pmonks/tools-pom.svg)](https://github.com/pmonks/tools-pom/issues)\n![Maintained](https://badges.ws/badge/?label=maintained\u0026value=yes,+at+author's+discretion)\n\nA Clojure [tools.build](https://github.com/clojure/tools.build) task library related to the generation of comprehensive `pom.xml` files.\n\n\u003e [!IMPORTANT]\n\u003e `tools.build` v0.9.6 (October 2023) added comprehensive `pom.xml` file generation support via the [`:pom-data` option to the `write-pom` fn](https://clojure-doc.org/articles/cookbooks/cli_build_projects/#the-generated-pomxml-file).  That enhancement has made this library significantly less useful, and it's recommended that you use that functionality instead of what's here.\n\n## Tasks\n\n1. `pom` - generate a comprehensive `pom.xml` file from EDN (which can come from anywhere - stored in your `build.clj`, `deps.edn` or a separate file, or synthesised on the fly in your build tool script).\n\nNote that the `pom` task is entirely data-driven, so if your input data includes elements that are not valid in a [Maven POM](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html), the resulting file will be invalid.  You can check your input data by enabling the `:validate-pom` flag in the options that get passed to the task - this validates the resulting `pom.xml` file against the Maven POM schema, reporting any errors.\n\n## Using the library\n\n### Dependency\n\nExpress a maven dependency in your `deps.edn`, for a build tool alias:\n\n```edn\n  :aliases\n    :build\n      {:deps       {com.github.pmonks/tools-pom {:mvn/version \"RELEASE\"}}\n       :ns-default your.build.ns}\n```\n\n### Require the namespace\n\n```clojure\n(ns your.build.ns\n  (:require [tools-pom.tasks :as pom]))\n```\n\n### Add comprehensive `pom` information and a `pom` build task to your build\n\n```clojure\n(defn- set-opts\n  [opts]\n  (assoc opts\n         :lib          'com.github.yourusername/yourproject\n         :version      (format \"1.0.%s\" (b/git-count-revs nil))\n         :write-pom    true\n         :validate-pom true\n         ; Note: this EDN can come from anywhere - you could externalise it into a separate edn file (e.g. pom.edn), synthesise it from information elsewhere in your project, or whatever other scheme you like\n         :pom          {:description      \"Description of your project e.g. your project's GitHub \\\"short description\\\".\"\n                        :url              \"https://github.com/yourusername/yourproject\"\n                        :licenses         [:license   {:name \"Apache License 2.0\" :url \"http://www.apache.org/licenses/LICENSE-2.0.html\"}] ; Note first element is a tag\n                        :developers       [:developer {:id \"yourusername\" :name \"yourname\" :email \"youremail@emailservice.com\"}]           ; And here\n                        :scm              {:url                  \"https://github.com/yourusername/yourproject\"\n                                           :connection           \"scm:git:git://github.com/yourusername/yourproject.git\"\n                                           :developer-connection \"scm:git:ssh://git@github.com/yourusername/yourproject.git\"}\n                        :issue-management {:system \"github\" :url \"https://github.com/yourusername/yourproject/issues\"}}))\n\n(defn pom\n  \"Construct a comprehensive pom.xml file for this project\"\n  [opts]\n  (-\u003e opts\n      (set-opts)\n      (pom/pom)))\n```\n\n### API Documentation\n\n[API documentation is available here](https://pmonks.github.io/tools-pom/).\n\n## Contributor Information\n\n[Contributing Guidelines](https://github.com/pmonks/tools-pom/blob/release/.github/CONTRIBUTING.md)\n\n[Bug Tracker](https://github.com/pmonks/tools-pom/issues)\n\n[Code of Conduct](https://github.com/pmonks/tools-pom/blob/release/.github/CODE_OF_CONDUCT.md)\n\n### Developer Workflow\n\nThis project uses the [git-flow branching strategy](https://nvie.com/posts/a-successful-git-branching-model/), and the permanent branches are called `release` and `dev`.  Any changes to the `release` branch are considered a release and auto-deployed (JARs to Clojars, API docs to GitHub Pages, etc.).\n\nFor this reason, **all development must occur either in branch `dev`, or (preferably) in temporary branches off of `dev`.**  All PRs from forked repos must also be submitted against `dev`; the `release` branch is **only** updated from `dev` via PRs created by the core development team.  All other changes submitted to `release` will be rejected.\n\n### Build Tasks\n\n`tools-pom` uses [`tools.build`](https://clojure.org/guides/tools_build). You can get a list of available tasks by running:\n\n```\nclojure -A:deps -T:build help/doc\n```\n\nOf particular interest are:\n\n* `clojure -T:build test` - run the unit tests\n* `clojure -T:build lint` - run the linters (clj-kondo and eastwood)\n* `clojure -T:build ci` - run the full CI suite (check for outdated dependencies, run the unit tests, run the linters)\n* `clojure -T:build install` - build the JAR and install it locally (e.g. so you can test it with downstream code)\n\nPlease note that the `deploy` task is restricted to the core development team (and will not function if you run it yourself).\n\n## License\n\nCopyright © 2021 Peter Monks\n\nDistributed under the [Mozilla Public License, version 2.0](https://www.mozilla.org/en-US/MPL/2.0/).\n\nSPDX-License-Identifier: [`MPL-2.0`](https://spdx.org/licenses/MPL-2.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmonks%2Ftools-pom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmonks%2Ftools-pom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmonks%2Ftools-pom/lists"}