Project

Defines general information about the project.

Configuration

Legend:

  • required

  • optional

  • may use environment variable

  • accepts Name Templates

  • YAML

  • TOML

  • JSON

  • Maven

  • Gradle

# 
project:
  # The name of the project.
  # If undefined, defaults to the Git repository name.
  #  
  name: app

  # The version to be released.
  #  
  version: 1.0.0

  # The strategy used to parse the project version
  # 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
    #  
    pattern: .*-SNAPSHOT

    # The value of the snapshot tag.
    # If undefined, will use `early-access`.
    #   
    label: early-access

    # Generate full changelog since last non-snapshot release.
    # 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

    # Options to pass to the Java runtime
    # 
    options: [-Xmx2048m]

    # 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.
  #  
  name = "app"

  # The version to be released.
  #  
  version = "1.0.0"

  # The strategy used to parse the project version
  # 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
  #  
  snapshot.pattern = ".*-SNAPSHOT"

  # Generate full changelog since last non-snapshot release.
  # Default is `false`.
  #  
  snapshot.fullChangelog = true

  # The value of the snapshot tag.
  # 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"

  # Options to pass to the Java runtime
  # 
  java.options = ["-Xmx2048m"]

  # 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": {
    //  
    "name": "app",

    // The version to be released.
    //  
    "version": "1.0.0",

    // The strategy used to parse the project version
    // 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
      //  
      "pattern": ".*-SNAPSHOT",

      // The value of the snapshot tag.
      // If undefined, will use `early-access`.
      //   
      "label": "early-access",

      // Generate full changelog since last non-snapshot release.
      // 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",

      // Options to pass to the Java runtime
      // 
      "options": ["-Xmx2048m"],

      // 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>
    <!--
       
    -->
    <name>app</name>

    <!--
      The version to be released.
      If undefined, will use `${project.version}` from Maven.
       
    -->
    <version>1.0.0</version>

    <!--
      The strategy used to parse the project version
      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
         
      -->
      <pattern>.*-SNAPSHOT</pattern>

      <!--
        The value of the snapshot tag.
        If undefined, will use `early-access`.
          
      -->
      <label>early-access</label>

      <!--
        Generate full changelog since last non-snapshot release.
        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>

      <!--
        Options to pass to the Java runtime
        
      -->
      <options>-Xmx2048m</options>

      <!--
        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 {
    //  
    name = 'app'

    // The version to be released.
    // If undefined, will use `${project.version}` from Gradle.
    //  
    version = '1.0.0'

    // The strategy used to parse the project version
    // 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
      //  
      pattern = '.*-SNAPSHOT'

      // The value of the snapshot tag.
      // If undefined, will use `early-access`.
      //   
      label = 'early-access'

      // Generate full changelog since last non-snapshot release.
      // 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'

      // Options to pass to the Java runtime
      // 
      options = ['-Xmx2048m']

      // 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')
    }
  }
}

Environment

When not explicitly set, the value of the following properties may be resolved from an environment variable or a system property as shown in the table. The system property takes precedence over the environment variable.

System Property Environment Variable

name

jreleaser.project.name

JRELEASER_PROJECT_NAME

version

jreleaser.project.version

JRELEASER_PROJECT_VERSION

versionPattern

jreleaser.project.version.pattern

JRELEASER_PROJECT_VERSION_PATTERN

snapshot.pattern

jreleaser.project.snapshot.pattern

JRELEASER_PROJECT_SNAPSHOT_PATTERN

snapshot.label

jreleaser.project.snapshot.label

JRELEASER_PROJECT_SNAPSHOT_LABEL

snapshot.fullChangelog

jreleaser.project.snapshot.full.changelog

JRELEASER_PROJECT_SNAPSHOT_FULL_CHANGELOG

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.