Project

Defines general information about the project.

Legend:

  • required

  • optional

  • may use environment variable

  • accepts Name Templates

  • YAML

  • TOML

  • JSON

  • Maven

  • Gradle

# 
project:
  # The name of the project.
  # May define a `JRELEASER_PROJECT_NAME` environment variable instead.
  # If undefined, defaults to the Git repository name.
  #  
  name: app

  # The version to be released.
  # May define a `JRELEASER_PROJECT_VERSION` environment variable instead.
  #  
  version: 1.0.0

  # The strategy used to parse the project version
  # May define a `JRELEASER_PROJECT_VERSION_PATTERN` environment variable instead.
  # Supported values are [`SEMVER`, `CALVER:<format>`, `CHRONVER`, `JAVA_RUNTIME`, `JAVA_MODULE`, `CUSTOM`].
  # Defaults to `SEMVER`.
  #  
  versionPattern: SEMVER

  # 
  snapshot:
    # A regex to determine if the project version is snapshot
    # May define a `JRELEASER_PROJECT_SNAPSHOT_PATTERN` environment variable instead.
    #  
    pattern: .*-SNAPSHOT

    # The value of the snapshot tag.
    # May define a `JRELEASER_PROJECT_SNAPSHOT_LABEL` environment variable instead.
    # If undefined, will use `early-access`.
    #   
    label: early-access

    # Generate full changelog since last non-snapshot release.
    # May define a `JRELEASER_PROJECT_SNAPSHOT_FULL_CHANGELOG` environment variable instead.
    # Default is `false`.
    #  
    fullChangelog: true

  # A short description (60 chars max).
  #  Only if configured distributions or announcers.
  description: My awesome app

  # A more thorough explanation of the project's capabilities.
  # May use markdown syntax.
  # If left unspecified, will use the value of `description`.
  #  Only if configured distributions or announcers.
  longDescription: |
    My Awesome app is the bees knees

  # A list of author names.
  #  Only if configured distributions or announcers.
  authors:
    - Duke

  # A list of tags.
  # 
  tags:
    - cli
    - awesome

  # List of maintainers.
  # Values are typically GitHub/GitLab usernames.
  # 
  maintainers:
    - 'duke'

  # The stereotype of this project.
  # Supported values are [`NONE`, `CLI`, `DESKTOP`, `WEB`, `MOBILE`].
  # Defaults to `NONE`.
  # 
  stereotype: CLI

  # The project's license.
  # It's recommended to use a valid SPDX identifier if the project is Open Source.
  # See https://spdx.org/licenses.
  #  Only if configured distributions or announcers.
  license: Apache-2.0

  # The project's inception year.
  # 
  inceptionYear: 2021

  # The project's copyright notice.
  # You may set `${project.inceptionYear}` and `${project.authors}` instead.
  # 
  copyright: 2021 Duke

  # The project's vendor.
  # Default is empty.
  # 
  vendor: Acme inc.

  # 
  links:
    #  
    homepage: https://acme.com/app
    #  
    documentation: https://acme.com/app/docs
    #  
    license: https://spdx.org/licenses/Apache-2.0.html
    # If undefined, will use the releaser's `issueTrackerUrl`.
    #  
    bugTracker: https://vcs.acme.com/app/issues
    # If undefined, will use the releaser's `repoUrl`.
    #  
    vcsBrowser: https://vcs.acme.com/app
    #  
    faq: https://acme.com/app/faq
    #  
    help: https://acme.com/app/help
    #  
    donation: https://acme.com/app/donations
    #  
    translate: https://acme.com/app/tr
    #  
    contact: https://acme.com/app/contact
    #  
    contribute: https://acme.com/app/contribute

  # Additional properties used when evaluating templates.
  #  
  extraProperties:
    # Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.
    foo: bar

  # Required if there are configured distributions.
  # 
  java:
    # Maven coordinates: groupId.
    # Inherited by distributions if they do not define a value for it.
    # 
    groupId: com.acme

    # Maven coordinates: artifactId.
    # If undefined, will use ${project.name}.
    # Inherited by distributions if they do not define a value for it.
    # 
    artifactId: app

    # The minimum Java version required by consumers to run the application.
    # 
    version: 8

    # Name of main module (if any).
    # Define only if the application is modular.
    # 
    mainModule: com.acme.demo

    # The application's entry point.
    # 
    mainClass: com.acme.Main

    # Identifies the project as being member of a multi-project build.
    # Defaults to `false`.
    # 
    multiProject: false

    # Additional properties used when evaluating templates.
    # 
    extraProperties:
      # Key will be capitalized and prefixed with `java`, i.e, `javaFoo`.
      foo: bar

  # A list of screenshots.
  # 
  screenshots:
      # Publicly available URL. PNG format is preferred.
      #  
    - url: https://acme.com/app.png
      # The type of image.
      # Valid values are [`SOURCE`, `THUMBNAIL`].
      # Defaults to `SOURCE`.
      # 
      type: THUMBNAIL
      # Marks this screenshot as the primary one.
      # Only a single screenshot may be set as primary.
      # 
      primary: true
      # A description of the image.
      # Should be no more than 100 characters long.
      # 
      caption: App in action
      # Image width in pixels.
      # Required if type = `THUMBNAIL`.
      # 
      width: 250
      # Image height in pixels.
      # Required if type = `THUMBNAIL`.
      # 
      height: 250
      # Additional properties used when evaluating templates.
      #  
      extraProperties:
        # Key will be capitalized and prefixed with `screenshot`, i.e, `screenshotFoo`.
        foo: bar

  # A list of icons.
  # 
  icons:
      # Publicly available URL. PNG format is preferred.
      #  
    - url: https://acme.com/app.png
      # Marks this icon as the primary one.
      # Only a single icon may be set as primary.
      # 
      primary: true
      # Image width in pixels.
      # 
      width: 250
      # Image height in pixels.
      # 
      height: 250
      # Additional properties used when evaluating templates.
      #  
      extraProperties:
        # Key will be capitalized and prefixed with `icon`, i.e, `iconFoo`.
        foo: bar
# 
[project]
  # The name of the project.
  # May define a `JRELEASER_PROJECT_NAME` environment variable instead.
  #  
  name = "app"

  # The version to be released.
  # May define a `JRELEASER_PROJECT_VERSION` environment variable instead.
  #  
  version = "1.0.0"

  # The strategy used to parse the project version
  # May define a `JRELEASER_PROJECT_VERSION_PATTERN` environment variable instead.
  # Supported values are [`SEMVER`, `CALVER:<format>`, `CHRONVER`, `JAVA_RUNTIME`, `JAVA_MODULE`, `CUSTOM`].
  # Defaults to `SEMVER`.
  #  
  versionPattern = "SEMVER"

  # A regex to determine if the project version is snapshot
  # May define a `JRELEASER_PROJECT_SNAPSHOT_PATTERN` environment variable instead.
  #  
  snapshot.pattern = ".*-SNAPSHOT"

  # Generate full changelog since last non-snapshot release.
  # May define a `JRELEASER_PROJECT_SNAPSHOT_FULL_CHANGELOG` environment variable instead.
  # Default is `false`.
  #  
  snapshot.fullChangelog = true

  # The value of the snapshot tag.
  # May define a `JRELEASER_PROJECT_SNAPSHOT_LABEL` environment variable instead.
  # If undefined, will use `early-access`.
  #   
  snapshot.label = "early-access"

  # A short description (60 chars max).
  #  Only if configured distributions or announcers.
  description = "My awesome app"

  # A more thorough explanation of the project's capabilities.
  # May use markdown syntax.
  # If left unspecified, will use the value of `description`.
  #  Only if configured distributions or announcers.
  longDescription = """
    My Awesome app is the bees knees
  """

  # A list of author names.
  #  Only if configured distributions or announcers.
  authors = ["Duke"]

  # A list of tags.
  # 
  tags = ["cli", "awesome"]

  # List of maintainers.
  # Values are typically GitHub/GitLab usernames.
  # 
  maintainers = ["duke"]

  # The stereotype of this project.
  # Supported values are [`NONE`, `CLI`, `DESKTOP`, `WEB`, `MOBILE`].
  # Defaults to `NONE`.
  # 
  stereotype = "CLI"

  # The project's license.
  # It's recommended to use a valid SPDX identifier if the project is Open Source.
  # See https://spdx.org/licenses.
  #  Only if configured distributions or announcers.
  license = "Apache-2.0"

  # The project's inception year.
  # 
  inceptionYear = "2021"

  # The project's copyright notice.
  # You may set `${project.inceptionYear}` and `${project.authors}` instead.
  # 
  copyright = "2021 Duke"

  # The project's vendor.
  # Default is empty.
  # 
  vendor = "Acme inc."

  #  
  links.links.homepage = "https://acme.com/app"
  #  
  links.documentation = "https://acme.com/app/docs"
  #  
  links.license = "https://spdx.org/licenses/Apache-2.0.html"
  # If undefined, will use the releaser's `issueTrackerUrl`.
  #  
  links.bugTracker = "https://vcs.acme.com/app/issues"
  # If undefined, will use the releaser's `repoUrl`.
  #  
  links.vcsBrowser = "https://vcs.acme.com/app"
  #  
  links.faq = "https://acme.com/app/faq"
  #  
  links.help = "https://acme.com/app/help"
  #  
  links.donation = "https://acme.com/app/donations"
  #  
  links.translate = "https://acme.com/app/tr"
  #  
  links.contact = "https://acme.com/app/contact"
  #  
  links.contribute = "https://acme.com/app/contribute"

  # Additional properties used when evaluating templates.
  #  
  extraProperties.foo = "bar"
  # Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.

  # Required if there are configured distributions.

  # Maven coordinates: groupId.
  # Inherited by distributions if they do not define a value for it.
  # 
  java.groupId = "com.acme"

  # Maven coordinates: artifactId.
  # If undefined, will use ${project.name}.
  # Inherited by distributions if they do not define a value for it.
  # 
  java.artifactId = "app"

  # The minimum Java version required by consumers to run the application.
  # 
  java.version = "8"

  # Name of main module (if any).
  # Define only if the application is modular.
  # 
  java.mainModule = "com.acme.demo"

  # The application's entry point.
  # 
  java.mainClass = "com.acme.Main"

  # Identifies the project as being member of a multi-project build.
  # Defaults to `false`.
  # 
  java.multiProject = false

  # Additional properties used when evaluating templates.
  # 
  java.extraProperties.foo = "bar"
  # Key will be capitalized and prefixed with `java`, i.e, `javaFoo`.

  # A list of screenshots.
  # 
[[project.screenshots]]
  # Publicly available URL. PNG format is preferred.
  #  
  url = "https://acme.com/app.png"
  # The type of image.
  # Valid values are [`SOURCE`, `THUMBNAIL`].
  # Defaults to `SOURCE`.
  # 
  type = "THUMBNAIL"
  # Marks this screenshot as the primary one.
  # Only a single screenshot may be set as primary.
  # 
  primary = true
  # A description of the image.
  # Should be no more than 100 characters long.
  # 
  caption = "App in action"
  # Image width in pixels.
  # Required if type = `THUMBNAIL`.
  # 
  width = 250
  # Image height in pixels.
  # Required if type = `THUMBNAIL`.
  # 
  height = 250
  # Additional properties used when evaluating templates.
  #  
  extraProperties.foo = "bar"
  # Key will be capitalized and prefixed with `screenshot`, i.e, `screenshotFoo`.

  # A list of icons.
  # 
[[project.icons]]
  # Publicly available URL. PNG format is preferred.
  #  
  url = "https://acme.com/app.png"
  # Marks this icon as the primary one.
  # Only a single icon may be set as primary.
  # 
  primary = true
  # Image width in pixels.
  # 
  width = 250
  # Image height in pixels.
  # 
  height = 250
  # Additional properties used when evaluating templates.
  #  
  extraProperties.foo = "bar"
  # Key will be capitalized and prefixed with `icon`, i.e, `iconFoo`.
{
  // 
  "project": {
    // May define a `JRELEASER_PROJECT_NAME` environment variable instead.
    //  
    "name": "app",

    // The version to be released.
    // May define a `JRELEASER_PROJECT_VERSION` environment variable instead.
    //  
    "version": "1.0.0",

    // The strategy used to parse the project version
    // May define a `JRELEASER_PROJECT_VERSION_PATTERN` environment variable instead.
    // Supported values are [`SEMVER`, `CALVER:<format>`, `CHRONVER`, `JAVA_RUNTIME`, `JAVA_MODULE`, `CUSTOM`].
    // Defaults to `SEMVER`.
    //  
    "versionPattern": "SEMVER",

    // 
    "snapshot": {
      // A regex to determine if the project version is snapshot
      // May define a `JRELEASER_PROJECT_SNAPSHOT_PATTERN` environment variable instead.
      //  
      "pattern": ".*-SNAPSHOT",

      // The value of the snapshot tag.
      // May define a `JRELEASER_PROJECT_SNAPSHOT_LABEL` environment variable instead.
      // If undefined, will use `early-access`.
      //   
      "label": "early-access",

      // Generate full changelog since last non-snapshot release.
      // May define a `JRELEASER_PROJECT_SNAPSHOT_FULL_CHANGELOG` environment variable instead.
      // Default is `false`.
      //  
      "fullChangelog": true
    },

    // A short description (60 chars max).
    //  Only if configured distributions or announcers.
    "description": "My awesome app",

    // A more thorough explanation of the project's capabilities.
    // May use markdown syntax.
    // If left unspecified, will use the value of `description`.
    //  Only if configured distributions or announcers.
    "longDescription": "My Awesome app is the bees knees",

    // A list of author names.
    //  Only if configured distributions or announcers.
    "authors": [
      "Duke"
    ],

    // A list of tags.
    // 
    "tags": [
      "cli",
      "awesome"
    ],

    // List of maintainers.
    // Values are typically GitHub/GitLab usernames.
    // 
    "maintainers": [
      "duke"
    ],

    // The stereotype of this project.
    // Supported values are [`NONE`, `CLI`, `DESKTOP`, `WEB`, `MOBILE`].
    // Defaults to `NONE`.
    // 
    "stereotype": "CLI",

    // The project's license.
    // It's recommended to use a valid SPDX identifier if the project is Open Source.
    // See https://spdx.org/licenses.
    //  Only if configured distributions or announcers.
    "license": "Apache-2.0",

    // The project's inception year.
    // 
    "inceptionYear": "2021",

    // The project's copyright notice.
    // You may set `${project.inceptionYear}` and `${project.authors}` instead.
    // 
    "copyright": "2021 Duke",

    // The project's vendor.
    // Default is empty.
    // 
    "vendor": "Acme inc.",

    // 
    "links": {
      //  
      "homepage": "https://acme.com/app",
      //  
      "documentation": "https://acme.com/app/docs",
      //  
      "license": "https://spdx.org/licenses/Apache-2.0.html",
      // If undefined, will use the releaser's `issueTrackerUrl`.
      //  
      "bugTracker": "https://vcs.acme.com/app/issues",
      // If undefined, will use the releaser's `repoUrl`.
      //  
      "vcsBrowser": "https://vcs.acme.com/app",
      //  
      "faq": "https://acme.com/app/faq",
      //  
      "help": "https://acme.com/app/help",
      //  
      "donation": "https://acme.com/app/donations",
      //  
      "translate": "https://acme.com/app/tr",
      //  
      "contact": "https://acme.com/app/contact",
      //  
      "contribute": "https://acme.com/app/contribute"
    },

    // Additional properties used when evaluating templates.
    //  
    "extraProperties": {
      // Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.
      "foo": "bar"
    },

    // Required if there are configured distributions.
    // 
    "java": {
      // Maven coordinates: groupId.
      // Inherited by distributions if they do not define a value for it.
      // 
      "groupId": "com.acme",

      // Maven coordinates: artifactId.
      // If undefined, will use ${project.name}.
      // Inherited by distributions if they do not define a value for it.
      // 
      "artifactId": "app",

      // The minimum Java version required by consumers to run the application.
      // 
      "version": "8",

      // Name of main module (if any).
      // Define only if the application is modular.
      // 
      "mainModule": "com.acme.demo",

      // The application's entry point.
      // 
      "mainClass": "com.acme.Main",

      // Identifies the project as being member of a multi-project build.
      // Defaults to `false`.
      // 
      "multiProject": false,

      // Additional properties used when evaluating templates.
      // 
      "extraProperties": {
        // Key will be capitalized and prefixed with `java`, i.e, `javaFoo`.
        "foo": "bar"
      }
    },
    // A list of screenshots.
    // 
    screenshots: [
      {
        // Publicly available URL. PNG format is preferred.
        //  
        "url": "https://acme.com/app.png",
        // The type of image.
        // Valid values are [`SOURCE`, `THUMBNAIL`].
        // Defaults to `SOURCE`.
        // 
        "type": "THUMBNAIL",
        // Marks this screenshot as the primary one.
        // Only a single screenshot may be set as primary.
        // 
        "primary": true,
        // A description of the image.
        // Should be no more than 100 characters long.
        // 
        "caption": "App in action",
        // Image width in pixels.
        // Required if type = `THUMBNAIL`.
        // 
        "width": 250,
        // Image height in pixels.
        // Required if type = `THUMBNAIL`.
        // 
        "height": 250,
        // Additional properties used when evaluating templates.
        //  
        "extraProperties": {
          // Key will be capitalized and prefixed with `screenshot`, i.e, `screenshotFoo`.
          "foo": "bar"
        }
      }
    ],
    // A list of icons.
    // 
    icons: [
      {
        // Publicly available URL. PNG format is preferred.
        //  
        "url": "https://acme.com/app.png",
        // Marks this icon as the primary one.
        // Only a single icon may be set as primary.
        // 
        "primary": true,
        // Image width in pixels.
        // 
        "width": 250,
        // Image height in pixels.
        // 
        "height": 250,
        // Additional properties used when evaluating templates.
        //  
        "extraProperties": {
          // Key will be capitalized and prefixed with `icon`, i.e, `iconFoo`.
          "foo": "bar"
        }
      }
    ]
  }
}
<jreleaser>
  <!--
    
  -->
  <project>
    <!--
      May define a `JRELEASER_PROJECT_NAME` environment variable instead.
       
    -->
    <name>app</name>

    <!--
      The version to be released.
      If undefined, will use ${project.version} from Maven.
      May define a `JRELEASER_PROJECT_VERSION` environment variable instead.
       
    -->
    <version>1.0.0</version>

    <!--
      The strategy used to parse the project version
      May define a `JRELEASER_PROJECT_VERSION_PATTERN` environment variable instead.
      Supported values are [`SEMVER`, `CALVER:<format>`, `CHRONVER`, `JAVA_RUNTIME`, `JAVA_MODULE`, `CUSTOM`].
      Defaults to `SEMVER`.
       
    -->
    <versionPattern>SEMVER</versionPattern>

    <!--
      
    -->
    <snapshot>
      <!--
        A regex to determine if the project version is snapshot
        May define a `JRELEASER_PROJECT_SNAPSHOT_PATTERN` environment variable instead.
         
      -->
      <pattern>.*-SNAPSHOT</pattern>

      <!--
        The value of the snapshot tag.
        May define a `JRELEASER_PROJECT_SNAPSHOT_LABEL` environment variable instead.
        If undefined, will use `early-access`.
          
      -->
      <label>early-access</label>

      <!--
        Generate full changelog since last non-snapshot release.
        May define a `JRELEASER_PROJECT_SNAPSHOT_FULL_CHANGELOG` environment variable instead.
        Default is `false`.
         
      -->
      <fullChangelog>true</fullChangelog>
    </snapshot>

    <!--
      A short description (60 chars max).
      If undefined, will use ${project.description} from Maven.
       Only if configured distributions or announcers.
    -->
    <description>My awesome app</description>

    <!--
      A more thorough explanation of the project's capabilities.
      May use markdown syntax.
      If left unspecified, will use the value of `description`.
       Only if configured distributions or announcers.
    -->
    <longDescription>
      My Awesome app is the bees knees
    </longDescription>

    <!--
      A list of author names.
      If undefined, will use ${project.developers} from Maven, looking for
      matches of <role>author</role>
       Only if configured distributions or announcers.
    -->
    <authors>
      <author>Duke</author>
    </authors>

    <!--
      A list of tags.
      
    -->
    <tags>
      <tag>cli</tag>
      <tag>awesome</tag>
    </tags>

    <!--
      List of maintainers.
      Values are typically GitHub/GitLab usernames.
      
    -->
    <maintainers>
      <maintainer>duke</maintainer>
    </maintainers>

    <!--
      The stereotype of this project.
      Supported values are [`NONE`, `CLI`, `DESKTOP`, `WEB`, `MOBILE`].
      Defaults to `NONE`.
      
    -->
    <stereotype>CLI</stereotype>

    <!--
      The project's license.
      If undefined, will use ${project.licenses} from Maven.
      It's recommended to use a valid SPDX identifier if the project is Open Source.
      See https://spdx.org/licenses.
       Only if configured distributions or announcers.
    -->
    <license>Apache-2.0</license>

    <!--
      The project's inception year.
      
    -->
    <inceptionYear>2021</inceptionYear>

    <!--
      The project's copyright notice.
      You may set `${project.inceptionYear}` and `${project.authors}` instead.
      
    -->
    <copyright>2021 Duke</copyright>

    <!--
      The project's vendor.
      Default is empty.
      
    -->
    <vendor>Acme inc.</vendor>

    <!--
      
    -->
    <links>
      <!--
         
      -->
      <homepage>https://acme.com/app</homepage>
      <!--
         
      -->
      <documentation>https://acme.com/app/docs</documentation>
      <!--
         
      -->
      <license>https://spdx.org/licenses/Apache-2.0.html</license>
      <!--
        If undefined, will use the releaser's `issueTrackerUrl`.
         
      -->
      <bugTracker>https://vcs.acme.com/app/issues</bugTracker>
      <!--
        If undefined, will use the releaser's `repoUrl`.
         
      -->
      <vcsBrowser>https://vcs.acme.com/app</vcsBrowser>
      <!--
         
      -->
      <faq>https://acme.com/app/faq</faq>
      <!--
         
      -->
      <help>https://acme.com/app/help</help>
      <!--
         
      -->
      <donation>https://acme.com/app/donations</donation>
      <!--
         
      -->
      <translate>https://acme.com/app/tr</translate>
      <!--
         
      -->
      <contact>https://acme.com/app/contact</contact>
      <!--
         
      -->
      <contribute>https://acme.com/app/contribute</contribute>
    </links>

    <!--
      Additional properties used when evaluating templates.
       
    -->
    <extraProperties>
      <!--
        Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.
      -->
      <foo>bar</foo>
    </extraProperties>

    <!--
      Required if there are configured distributions.
      
    -->
    <java>
      <!--
        Maven coordinates: groupId.
        Inherited by distributions if they do not define a value for it.
        If undefined, will use ${project.groupId} from Maven.
        
      -->
      <groupId>com.acme</groupId>

      <!--
        Maven coordinates: artifactId.
        Inherited by distributions if they do not define a value for it.
        If undefined, will use ${project.artifactId} from Maven.
        
      -->
      <artifactId>app</artifactId>

      <!--
        The minimum Java version required by consumers to run the application.
        If undefined, will determined by reading the following Maven properties:
         - maven.compiler.release
         - maven.compiler.target
         - maven.compiler.source
         - project.compilerRelease
         - System.getProperty("java.version")
        
      -->
      <version>8</version>

      <!--
        Name of main module (if any).
        Define only if the application is modular.
        
      -->
      <mainModule>com.acme.demo</mainModule>

      <!--
        The application's entry point.
        
      -->
      <mainClass>com.acme.Main</mainClass>

      <!--
        Identifies the project as being member of a multi-project build.
        Defaults to `false`.
        
      -->
      <multiProject>false</multiProject>

      <!--
        Additional properties used when evaluating templates.
        
      -->
      <extraProperties>
        <!--
          Key will be capitalized and prefixed with `java`, i.e, `javaFoo`.
        -->
        <foo>bar</foo>
      </extraProperties>
    </java>

    <!--
      A list of screenshots.
      
    -->
    <screenshots>
      <screenshot>
        <!--
          Publicly available URL. PNG format is preferred.
           
        -->
        <url>https://acme.com/app.png</url>
        <!--
          The type of image.
          Valid values are [`SOURCE`, `THUMBNAIL`].
          Defaults to `SOURCE`.
          
        -->
        <type>THUMBNAIL</type>
        <!--
          Marks this screenshot as the primary one.
          Only a single screenshot may be set as primary.
          
        -->
        <primary>true</primary>
        <!--
          A description of the image.
          Should be no more than 100 characters long.
          
        -->
        <caption>App in action</caption>
        <!--
          Image width in pixels.
          Required if type = `THUMBNAIL`.
          
        -->
        <width>250</width>
        <!--
          Image height in pixels.
          Required if type = `THUMBNAIL`.
          
        -->
        <height>250</height>
        <!--
          Additional properties used when evaluating templates.
           
        -->
        <extraProperties>
          <!--
            Key will be capitalized and prefixed with `screenshot`, i.e, `screenshotFoo`.
          -->
          <foo>bar</foo>
        </extraProperties>
      </screenshot>
    </screenshots>
    <!--
      A list of icons.
      
    -->
    <icons>
      <icon>
        <!--
          Publicly available URL. PNG format is preferred.
           
        -->
        <url>https://acme.com/app.png</url>
        <!--
          Marks this icon as the primary one.
          Only a single icon may be set as primary.
          
        -->
        <primary>true</primary>
        <!--
          Image width in pixels.
          
        -->
        <width>250</width>
        <!--
          Image height in pixels.
          
        -->
        <height>250</height>
        <!--
          Additional properties used when evaluating templates.
           
        -->
        <extraProperties>
          <!--
            Key will be capitalized and prefixed with `icon`, i.e, `iconFoo`.
          -->
          <foo>bar</foo>
        </extraProperties>
      </icon>
    </icons>
  </project>
</jreleaser>
jreleaser {
  // 
  project {
    // May define a `JRELEASER_PROJECT_NAME` environment variable instead.
    //  
    name = 'app'

    // The version to be released.
    //  If undefined, will use ${project.version} from Gradle.
    // May define a `JRELEASER_PROJECT_VERSION` environment variable instead.
    //  
    version = '1.0.0'

    // The strategy used to parse the project version
    // May define a `JRELEASER_PROJECT_VERSION_PATTERN` environment variable instead.
    // Supported values are [`SEMVER`, `CALVER:<format>`, `CHRONVER`, `JAVA_RUNTIME`, `JAVA_MODULE`, `CUSTOM`].
    // Defaults to `SEMVER`.
    //  
    versionPattern = 'SEMVER'

    // 
    snapshot {
      // A regex to determine if the project version is snapshot
      // May define a `JRELEASER_PROJECT_SNAPSHOT_PATTERN` environment variable instead.
      //  
      pattern = '.*-SNAPSHOT'

      // The value of the snapshot tag.
      // May define a `JRELEASER_PROJECT_SNAPSHOT_LABEL` environment variable instead.
      // If undefined, will use `early-access`.
      //   
      label = 'early-access'

      // Generate full changelog since last non-snapshot release.
      // May define a `JRELEASER_PROJECT_SNAPSHOT_FULL_CHANGELOG` environment variable instead.
      // Default is `false`.
      //  
      fullChangelog = true
    }

    // A short description (60 chars max).
    //  Only if configured distributions or announcers.
    description = 'My awesome app'

    // A more thorough explanation of the project's capabilities.
    // May use markdown syntax.
    // If left unspecified, will use the value of `description`.
    //  Only if configured distributions or announcers.
    longDescription = 'My Awesome app is the bees knees'

    // A list of author names.
    //  Only if configured distributions or announcers.
    authors = ['Duke']

    // A list of tags.
    // 
    tags = ['cli', 'awesome']

    // List of maintainers.
    // Values are typically GitHub/GitLab usernames.
    // 
    maintainers = ['duke']

    // The stereotype of this project.
    // Supported values are [`NONE`, `CLI`, `DESKTOP`, `WEB`, `MOBILE`].
    // Defaults to `NONE`.
    // 
    stereotype = 'CLI'

    // The project's license.
    // It's recommended to use a valid SPDX identifier if the project is Open Source.
    // See https://spdx.org/licenses.
    //  Only if configured distributions or announcers.
    license = 'Apache-2.0'

    // The project's inception year.
    // 
    inceptionYear = '2021'

    // The project's copyright notice.
    // You may set `${project.inceptionYear}` and `${project.authors}` instead.
    // 
    copyright = '2021 Duke'

    // The project's vendor.
    // Default is empty.
    // 
    vendor = 'Acme inc.'

    // 
    links {
      //  
      homepage = 'https://acme.com/app'
      //  
      documentation = 'https://acme.com/app/docs'
      //  
      license = 'https://spdx.org/licenses/Apache-2.0.html'
      // If undefined, will use the releaser's `issueTrackerUrl`.
      //  
      bugTracker = 'https://vcs.acme.com/app/issues'
      // If undefined, will use the releaser's `repoUrl`.
      //  
      vcsBrowser = 'https://vcs.acme.com/app'
      //  
      faq = 'https://acme.com/app/faq'
      //  
      help = 'https://acme.com/app/help'
      //  
      donation = 'https://acme.com/app/donations'
      //  
      translate = 'https://acme.com/app/tr'
      //  
      contact = 'https://acme.com/app/contact'
      //  
      contribute = 'https://acme.com/app/contribute'
    }

    // Additional properties used when evaluating templates.
    // Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.
    //  
    extraProperties.put('foo', 'bar')

    // Required if there are configured distributions.
    // 
    java {
      // Maven coordinates: groupId.
      // Inherited by distributions if they do not define a value for it.
      // If undefined, will use ${project.group} from Gradle.
      // 
      groupId = 'com.acme'

      // Maven coordinates: artifactId.
      // Inherited by distributions if they do not define a value for it.
      // If undefined, will use ${project.name} from Gradle.
      // 
      artifactId = 'app'

      // The minimum Java version required by consumers to run the application.
      // If undefined, will determined by reading the following Gradle properties:
      //  - project.targetCompatibility
      //  - project.compilerRelease
      //  - JavaVersion.current()
      // 
      version = '8'

      // Name of main module (if any).
      // Define only if the application is modular.
      // 
      mainModule = 'com.acme.demo'

      // The application's entry point.
      // 
      mainClass = 'com.acme.Main'

      // Identifies the project as being member of a multi-project build.
      // Defaults to `false`.
      // If undefined, will be determine based on the Gradle setup.
      // 
      multiProject = false

      // Additional properties used when evaluating templates.
      // Key will be capitalized and prefixed with `java`, i.e, `javaFoo`.
      // 
      extraProperties.put('foo', 'bar')
    }

    // A list of screenshots.
    // 
    screenshot {
      // Publicly available URL. PNG format is preferred.
      //  
      url = 'https://acme.com/app.png'
      // The type of image.
      // Valid values are [`SOURCE`, `THUMBNAIL`].
      // Defaults to `SOURCE`.
      // 
      screenshotType = THUMBNAIL
      // Marks this screenshot as the primary one.
      // Only a single screenshot may be set as primary.
      // 
      primary = true
      // A description of the image.
      // Should be no more than 100 characters long.
      // 
      caption = 'App in action'
      // Image width in pixels.
      // Required if type = `THUMBNAIL`.
      // 
      width = 250
      // Image height in pixels.
      // Required if type = `THUMBNAIL`.
      // 
      height = 250
      // Additional properties used when evaluating templates.
      // Key will be capitalized and prefixed with `screenshot`, i.e, `screenshot`.
      //  
      extraProperties.put('foo', 'bar')
    }

    // A list of icons.
    // 
    icon {
      // Publicly available URL. PNG format is preferred.
      //  
      url = 'https://acme.com/app.png'
      // Marks this icon as the primary one.
      // Only a single icon may be set as primary.
      // 
      primary = true
      // Image width in pixels.
      // 
      width = 250
      // Image height in pixels.
      // 
      height = 250
      // Additional properties used when evaluating templates.
      // Key will be capitalized and prefixed with `icon`, i.e, `icon`.
      //  
      extraProperties.put('foo', 'bar')
    }
  }
}

License URL

The value of this property should point out to an external URL from where the license may be read. If the given value for the license property is an SPDX identifier then JReleaser can calculate the value for licenseUrl. If there’s no match then JReleaser attempts to resolve a file named LICENSE, LICENSE.txt, LICENSE.md, or LICENSE.adoc from the project’s repository.

A full list of SPDX identifiers may be found at https://spdx.org/licenses.

Version

It is assumed that the project’s version follows the Semantic Versioning specification, however not everyone is happy with this specification nor is able to follow it to the letter. Fortunately JReleaser does not impose a version format and lets you decide among the following options:

SEMVER

The version number complies with the Semantic Versioning specification. Examples:

  • 1.2.3

  • 1.2.3.TAG

  • 1.2.3+BUILD

  • 1.2.3.TAG+BUILD

The following relaxed patterns are also supported:

  • 1.2.TAG

  • 1.2+BUILD

  • 1.2.TAG+BUILD

  • 1.TAG

  • 1+BUILD

  • 1.TAG+BUILD

CALVER

The version number complies with the CalVer syntax, resulting in the following supported formats:

Tokens
  • for year:

    • YYYY: [2-9][0-9]{3}

    • YY: [1-9]|[1-9][0-9]|[1-9][0-9]{2}

    • 0Y: 0[1-9]|[1-9][0-9]|[1-9][0-9]{2}

  • for month:

    • MM: [1-9]|1[0-2]

    • 0M: 0[1-9]|1[0-2]

  • for day:

    • DD: [1-9]|[1-2][0-9]|3[0-1]

    • 0D: 0[1-9]|[1-2][0-9]|3[0-1]

  • for week:

    • WW: [1-9]|[1-4][0-9]|5[0-2]

    • 0W: 0[1-9]|[1-4][0-9]|5[0-2]

  • for MINOR: 0|[1-9]\d*

  • for MICRO: 0|[1-9]\d*

  • for MODIFIER: [a-zA-Z-][0-9a-zA-Z-]*

Restrictions
  • Format must begin with a year token.

  • If month is present so can day, but not week.

  • If week is present then neither month nor day are allowed.

  • minor must be present before micro.

  • modifier always goes at the end.

  • separator chars may be any of ., _, -.

The MODIFIER token may be set as optional.

Table 1. Examples
Pattern Version

CALVER:YYYY

2021

CALVER:YY

21

CALVER:0Y

06

CALVER:YYYY.MM

2021.1

CALVER:YYYY.0M

2021.01

CALVER:YYYY.MM.DD

2021.1.1

CALVER:YYYY.MM.0D

2021.1.01

CALVER:YYYY.WW

2021.1

CALVER:YYYY.0W

2021.01

CALVER:YYYY.MINOR.MICRO

2021.1.2

CALVER:YYYY.MM.DD_MICRO

2021.1.2_3

CALVER:YYYY.MODIFIER

2021.ALPHA1

CALVER:YYYY.MINOR.MICRO.MODIFIER

2021.1.2.ALPHA1

CALVER:YYYY.MODIFIER

2021.FOO-BAR

CALVER:YYYY[.MODIFIER]

2021.FOO-BAR, also matches 2021

CHRONVER

The version number complies with the ChronVer syntax, resulting in the following supported formats:

  • 2022.01.02

  • 2022.01.02.1

  • 2022.01.02.1-TAG

  • 2022.01.02.1-TAG.2

The following restrictions apply:

  • The initial changeset identifier cannot be 0, this means 2022.01.02.0 is invalid.

  • There can only be one tag in the changeset modifier and an optional second number.

JAVA_RUNTIME

The version number complies with the Java Runtime Version syntax, resulting in the following supported formats:

  • 1.2.3

  • 1.2.3-PRE

  • 1.2.3+123

  • 1.2.3-PRE-OPT

  • 1.2.3+123-OPT

  • 1.2.3-PRE+456

  • 1.2.3-PRE+456-OPT

  • 1.2.3+-OPT

JAVA_MODULE

The version number complies with the Java Module Version syntax, resulting in the following supported formats:

  • 1.2.3

  • 1.2.3-PRE

  • 1.2.3+123

  • 1.2.3-PRE+456

CUSTOM

Use your own format, no pattern is enforced nor validated. Be aware that changelog generation may not be accurate as tags will be compared using their natural literal comparator, thus comparing "1" vs. "11" vs. "1.0" may not yield the expected result as these strings will not be parsed into numeric tokens.