{"id":27962320,"url":"https://github.com/thoughtworks/templify","last_synced_at":"2025-10-13T01:42:05.977Z","repository":{"id":275053211,"uuid":"620814782","full_name":"thoughtworks/templify","owner":"thoughtworks","description":"A Maven plugin for automating template-based configurations and placeholder replacements across XML, JSON, Java, and more","archived":false,"fork":false,"pushed_at":"2025-05-19T18:50:21.000Z","size":756,"stargazers_count":6,"open_issues_count":5,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-19T19:51:06.415Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","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/thoughtworks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2023-03-29T12:30:32.000Z","updated_at":"2025-05-19T14:38:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"13bc805e-fc53-4711-8b78-e4e464a45e6b","html_url":"https://github.com/thoughtworks/templify","commit_stats":null,"previous_names":["thoughtworks/templify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thoughtworks/templify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Ftemplify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Ftemplify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Ftemplify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Ftemplify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtworks","download_url":"https://codeload.github.com/thoughtworks/templify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Ftemplify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013904,"owners_count":26085326,"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-10-12T02:00:06.719Z","response_time":53,"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":[],"created_at":"2025-05-07T19:20:17.611Z","updated_at":"2025-10-13T01:42:05.948Z","avatar_url":"https://github.com/thoughtworks.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Templify \n\n**Standardize and accelerate the creation of templates-based projects using definining placeholders across any kind of project**\n\nTemplify is a Maven plugin that helps you generate templates-based from a predefined project using a YAML-based configuration. It supports advanced transformations such as XPath-based replacement in XML files – ideal for managing complex project scaffolding and enforcing consistency.\n\n[![Build and Deploy](https://github.com/thoughtworks/templify/actions/workflows/gitAction.yml/badge.svg)](https://github.com/thoughtworks/templify/actions/workflows/gitAction.yml) \n\n---\n\n## What does it do?\n\nTemplify automates the generation of templates by:\n\n- Reading a YAML config file (`maven-templify.yml`)\n- Loading project files from a directory\n- Applying structured transformations (like XPath replacements in XML)\n- Outputting a complete, placeholders templates-based ready to integrate with your Backstage, Jinja and so on \n\n---\n\n## Who is it for?\n\nTemplify is built for:\n\n- **Base Platform teams** creating reusable service templates\n- **Developers** automating repetitive setup tasks\n- **Organizations** seeking consistent project standards and faster delivery\n\n---\n\n## How it works\n\nYou define:\n\n- A **template folder** containing your base project\n- A **YAML config file** that describes:\n  - Which files to transform\n  - How to match content (XPath for XML)\n  - What to replace\n\nTemplify will process the files and generate a project in a specified destination.\n\n---\n\n## 🧪 Example usage\n\n### 1. Prepare your config file\n\n`maven-templify.yml`:\n\n```yaml\nsteps:\n  - kind: XmlHandler\n    apiVersion: v1\n    spec:\n      - files:\n          - pom.xml\n        placeholders:\n          - match: /project/groupId\n            replace: templify.param.groupId\n          - match: /project/artifactId\n            replace: templify.test.replace.map.artifactId\n          - match: /project/dependencies/dependency/scope[text()='test']\n            replace: templify.replace.map.scopes\n      - files:\n          - xmls/generic_1.xml\n        placeholders:\n          - match: /note/heading\n            replace: New Reminder\n      - files:\n          - xmls/complex/generic_2.xml\n        placeholders:\n          - match: /bookstore/book/author[text()='Kurt Cagle']\n            replace: templify.kurtCagle\n          - match: /bookstore/book/year[text()='2005']\n            replace: templify.NewYear\n```\n\n---\n\n### 2. Run the plugin\n\n```bash\nmvn com.thoughtworks.templify:templify:create\n```\n\n-\n\n## Template folder structure\n\n```\n\n📁 target/template/\n├── pom.xml\n├── xmls/\n│   ├── generic_1.xml\n│   └── complex/generic_2.xml\n└── other project files...\n```\n\nTemplify will copy this structure to the `target/template` folder and apply the transformations defined in `maven-templify.yml`.\n\n---\n\n## What makes it powerful?\n\n- 🎯 **XPath JSONPath, YAMLPath, JAva Procjects and Plain Text support** for precise targeting your project nodes\n- 🔄 **Batch transformations** across multiple files\n- 💼 **Custom parameter references** (e.g., `templify.param.groupId`)\n- 🧩 **Composable templates** for different types of services or modules\n\n---\n\n## Learn More\n\n- [Templify Wiki](https://github.com/thoughtworks/templify/wiki)\n\n--\n\n## Contributing\n\nSpotted a bug or have a new use case in mind? We welcome contributions, ideas, and questions. Open an [issue](https://github.com/thoughtworks/templify/issues) or submit a PR!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtworks%2Ftemplify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoughtworks%2Ftemplify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtworks%2Ftemplify/lists"}