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

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

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

  # 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

  # The project's website.
  #  Only if configured distributions or announcers.
  website: https://acme.com/app

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

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

  # 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 copyright notice.
  # You may set `${project.extraProperties.inceptionYear}` and `${project.authors}` instead.
  # 
  copyright: 2021 Duke

  # The project's documentation site.
  # Defaults to `${project.website}`.
  # 
  docsUrl: https://acme.com/app/docs

  # 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

    # 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
# 
[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"

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

  # 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
  """

  # The project's website.
  #  Only if configured distributions or announcers.
  website = "https://acme.com/app"

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

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

  # 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 copyright notice.
  # You may set `${project.extraProperties.inceptionYear}` and `${project.authors}` instead.
  # 
  copyright = "2021 Duke"

  # The project's documentation site.
  # Defaults to `${project.website}`.
  # 
  docsUrl = "https://acme.com/app/docs"

  # 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"

  # 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`.
{
  // 
  "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",

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

    // 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",

    // The project's website.
    //  Only if configured distributions or announcers.
    "website": "https://acme.com/app",

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

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

    // 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 copyright notice.
    // You may set `${project.extraProperties.inceptionYear}` and `${project.authors}` instead.
    // 
    "copyright": "2021 Duke",

    // The project's documentation site.
    // Defaults to `${project.website}`.
    // 
    "docsUrl": "https://acme.com/app/docs",

    // 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",

      // 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"
      }
    }
  }
}
<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>

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

    <!--
      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>

    <!--
      The project's website.
      If undefined, will use ${project.url} from Maven.
       Only if configured distributions or announcers.
    -->
    <website>https://acme.com/app</website>

    <!--
      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>

    <!--
      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 copyright notice.
      You may set `${project.extraProperties.inceptionYear}` and `${project.authors}` instead.
      
    -->
    <copyright>2021 Duke</copyright>

    <!--
      The project's documentation site.
      Defaults to `${project.website}`.
      
    -->
    <docsUrl>https://acme.com/app/docs</docsUrl>

    <!--
      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>

      <!--
        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>
  </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'

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

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

    // The project's website.
    //  Only if configured distributions or announcers.
    website = 'https://acme.com/app'

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

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

    // 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 copyright notice.
    // You may set `${project.extraProperties.inceptionYear}` and `${project.authors}` instead.
    // 
    copyright = '2021 Duke'

    // The project's documentation site.
    // Defaults to `${project.website}`.
    // 
    docsUrl = 'https://acme.com/app/docs'

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

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

When the org.kordamp.gradle.project plugin is used in combination with Gradle then the following properties will be automatically mapped if there were not defined in the jreleaser DSL block:

Kordamp JReleaser

config.info.description

project.description

config.info.links.website

project.website

config.info.authors

project.authors

config.info.tags

project.tags

config.info.licenses

project.license

config.info.inceptionYear

project.extraProperties.inceptionYear