{
  "$schema": "http://json-schema.org/schema",
  "$id": "NxMavenInit",
  "title": "Init",
  "type": "object",
  "properties": {
    "javaVersion": {
      "description": "Java version",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "default": "none",
      "x-prompt": {
        "message": "Which version of Java would you like to use?",
        "type": "list",
        "items": [
          {
            "value": "none",
            "label": "None - I will set it later in a parent project (for advanced use cases)"
          },
          {
            "value": "17",
            "label": "17"
          },
          {
            "value": "21",
            "label": "21"
          },
          {
            "value": "25",
            "label": "25"
          }
        ]
      }
    },
    "aggregatorProjectGroupId": {
      "type": "string",
      "default": "com.example",
      "description": "GroupId of root aggregator project",
      "x-prompt": "What groupId would you like to use for root aggregator project?"
    },
    "aggregatorProjectName": {
      "type": "string",
      "default": "root-aggregator-project",
      "description": "Name of root aggregator project",
      "x-prompt": "What name would you like to use for root aggregator project?",
      "pattern": "^[a-zA-Z].*$"
    },
    "aggregatorProjectVersion": {
      "type": "string",
      "default": "0.0.1-SNAPSHOT",
      "description": "Version of root aggregator project",
      "alias": "v",
      "x-prompt": "What version would you like to use for root aggregator project?"
    },
    "mavenRootDirectory": {
      "type": "string",
      "default": "",
      "description": "Where Maven Wrapper (if not skipped), config files and projects are placed"
    },
    "skipWrapper": {
      "description": "Don't generate Maven Wrapper",
      "type": "boolean",
      "default": false
    },
    "localRepoRelativePath": {
      "type": "string",
      "description": "Maven local repository relative path to {workspaceRoot}/{mavenRootDirectory}",
      "default": ".m2/repository"
    },
    "skipFormat": {
      "description": "Skip formatting files.",
      "type": "boolean",
      "default": false
    },
    "dependencyManagement": {
      "description": "Dependency Management",
      "type": "string",
      "default": "none",
      "x-prompt": {
        "message": "Which dependency management strategy would you like to use?",
        "type": "list",
        "items": [
          {
            "value": "none",
            "label": "None - I will configure it later in a parent project (for advanced use cases)"
          },
          {
            "value": "spring-boot-parent-pom",
            "label": "Spring Boot Parent POM"
          },
          {
            "value": "spring-boot-bom",
            "label": "Spring Boot BOM (Bill of Materials)"
          },
          {
            "value": "quarkus-bom",
            "label": "Quarkus BOM (Bill of Materials)"
          },
          {
            "value": "micronaut-parent-pom",
            "label": "Micronaut Parent POM"
          },
          {
            "value": "micronaut-bom",
            "label": "Micronaut BOM (Bill of Materials)"
          }
        ]
      }
    },
    "formatter": {
      "description": "The tool to use for code formatting.",
      "type": "string",
      "enum": ["none", "prettier"],
      "default": "prettier",
      "x-prompt": {
        "message": "Would you like to use Prettier for code formatting?",
        "type": "list",
        "items": [
          {
            "value": "prettier",
            "label": "Yes"
          },
          {
            "value": "none",
            "label": "No"
          }
        ]
      }
    },
    "buildTargetName": {
      "type": "string",
      "description": "Build target name",
      "default": "build"
    }
  },
  "required": [
    "javaVersion",
    "dependencyManagement",
    "aggregatorProjectGroupId",
    "aggregatorProjectName",
    "aggregatorProjectVersion",
    "localRepoRelativePath"
  ]
}
