Standardize and accelerate the creation of templates-based projects using definining placeholders across any kind of project
Templify 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.
Templify automates the generation of templates by:
- Reading a YAML config file (maven-templify.yml)
- Loading project files from a directory
- Applying structured transformations (like XPath replacements in XML)
- Outputting a complete, placeholders templates-based ready to integrate with your Backstage, Jinja and so on
Templify is built for:
- Base Platform teams creating reusable service templates
- Developers automating repetitive setup tasks
- Organizations seeking consistent project standards and faster delivery
You define:
- A template folder containing your base project
- A YAML config file that describes:
- Which files to transform
- How to match content (XPath for XML)
- What to replace
 
Templify will process the files and generate a project in a specified destination.
maven-templify.yml:
steps:
  - kind: XmlHandler
    apiVersion: v1
    spec:
      - files:
          - pom.xml
        placeholders:
          - match: /project/groupId
            replace: templify.param.groupId
          - match: /project/artifactId
            replace: templify.test.replace.map.artifactId
          - match: /project/dependencies/dependency/scope[text()='test']
            replace: templify.replace.map.scopes
      - files:
          - xmls/generic_1.xml
        placeholders:
          - match: /note/heading
            replace: New Reminder
      - files:
          - xmls/complex/generic_2.xml
        placeholders:
          - match: /bookstore/book/author[text()='Kurt Cagle']
            replace: templify.kurtCagle
          - match: /bookstore/book/year[text()='2005']
            replace: templify.NewYearmvn com.thoughtworks.templify:templify:create
📁 target/template/
├── pom.xml
├── xmls/
│   ├── generic_1.xml
│   └── complex/generic_2.xml
└── other project files...
Templify will copy this structure to the target/template folder and apply the transformations defined in maven-templify.yml.
- 🎯 XPath JSONPath, YAMLPath, JAva Procjects and Plain Text support for precise targeting your project nodes
- 🔄 Batch transformations across multiple files
- 💼 Custom parameter references (e.g., templify.param.groupId)
- 🧩 Composable templates for different types of services or modules
--
Spotted a bug or have a new use case in mind? We welcome contributions, ideas, and questions. Open an issue or submit a PR!