Http

Downloads artifacts, files, and signatures from an HTTP/HTTPS server.

Configuration

Legend:

  • required

  • optional

  • may use environment variable

  • accepts Name Templates

  • YAML

  • TOML

  • JSON

  • Maven

  • Gradle

# 
download:
  # 
  http:
    # Downloaders require a name.
    # 
    app:

      # Enables or disables the downloader.
      # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
      # Defaults to `NEVER`.
      #  
      active: ALWAYS

      # Defines the connection timeout in seconds.
      # Defaults to `20`.
      # 
      connectTimeout: 20

      # Defines the read timeout in seconds.
      # Defaults to `60`.
      # 
      readTimeout: 60

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

      # The username required for authorization.
      #  
      username: __USE_ENVIRONMENT_VARIABLE__

      # Password for login into the repository.
      #  
      password: __USE_ENVIRONMENT_VARIABLE__

      # The authorization method to use.
      # Supported values are [`NONE`, `BASIC`, `BEARER`].
      # `Basic` requires both username & password.
      # `BEARER` requires a token (set as password).
      # Defaults to `NONE`.
      # 
      authorization: BASIC

      # A list of assets to be downloaded.
      # 
      assets:
          # Full download path to asset.
          #  
        - input: 'https://artifacts.acme.com/logos/logo-256x256.png'

          # Local path where asset will be downloaded to.
          # Defaults to `#{jreleaser.downloadDirectory}/#{downloader.name}`.
          #  
          output: '{{projectName}}.png'

          # Unpack options
          # 
          unpack:
            # Unpack input archive when `true`.
            # Defaults to `false`.
            # 
            enabled: false

            # Skip the archive's root entry from the unpacked directory when `true`.
            # Defaults to `false`.
            # 
            skipRootEntry: false
# Downloaders require a name.
# 
[download.http.app]

  # Enables or disables the downloader.
  # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
  # Defaults to `NEVER`.
  #  
  active = "ALWAYS"

  # Defines the connection timeout in seconds.
  # Defaults to `20`.
  # 
  connectTimeout = 20

  # Defines the read timeout in seconds.
  # Defaults to `60`.
  # 
  readTimeout = 60

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

  # The username required for authorization.
  #  
  username = "__USE_ENVIRONMENT_VARIABLE__"

  # Password for login into the repository.
  #  
  password = "__USE_ENVIRONMENT_VARIABLE__"

  # The authorization method to use.
  # Supported values are [`NONE`, `BASIC`, `BEARER`].
  # `Basic` requires both username & password.
  # `BEARER` requires a token (set as password).
  # Defaults to `NONE`.
  # 
  authorization = "BASIC"

  # A list of assets to be downloaded.
  # 
  [[dowload.http.app.assets]]
    # Full download path to asset.
    #  
    input = "https://artifacts.acme.com/logos/logo-256x256.png"

    # Local path where asset will be downloaded to.
    # Defaults to `#{jreleaser.downloadDirectory}/#{downloader.name}`.
    #  
    output = "{{projectName}}.png"

    # Unpack input archive when `true`.
    # Defaults to `false`.
    # 
    unpack.enabled: false

    # Skip the archive's root entry from the unpacked directory when `true`.
    # Defaults to `false`.
    # 
    unpack.skipRootEntry: false
{
  // 
  "download": {
    // 
    "http": {
      // Downloaders require a name.
      // 
      "app": {

        // Enables or disables the downloader.
        // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        // Defaults to `NEVER`.
        //  
        "active": "ALWAYS",

        // Defines the connection timeout in seconds.
        // Defaults to `20`.
        // 
        "connectTimeout": 20,

        // Defines the read timeout in seconds.
        // Defaults to `60`.
        // 
        "readTimeout": 60,

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

        // The username required for authorization.
        //  
        "username": "__USE_ENVIRONMENT_VARIABLE__",

        // Password for login into the repository.
        //  
        "password": "__USE_ENVIRONMENT_VARIABLE__",

        // The authorization method to use.
        // Supported values are [`NONE`, `BASIC`, `BEARER`].
        // `Basic` requires both username & password.
        // `BEARER` requires a token (set as password).
        // Defaults to `NONE`.
        // 
        "authorization": "BASIC",

        // A list of assets to be downloaded.
        // 
        "assets": [
          {
            // Full download path to asset.
            //  
            "input": "https://artifacts.acme.com/logos/logo-256x256.png",

            // Local path where asset will be downloaded to.
            // Defaults to `#{jreleaser.downloadDirectory}/#{downloader.name}`.
            //  
            "output": "{{projectName}}.png",

            // Unpack options
            // 
            "unpack": {
              // Unpack input archive when `true`.
              // Defaults to `false`.
              // 
              "enabled": false,

              // Skip the archive's root entry from the unpacked directory when `true`.
              // Defaults to `false`.
              // 
              "skipRootEntry": false
            }
          }
        ]
      }
    }
  }
}
<jreleaser>
  <!--
    
  -->
  <download>
    <!--
      
    -->
    <http>
      <!--
        Downloaders require a name.
        
      -->
      <app>
        <!--
          Enables or disables the distribution.
          Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
          Defaults to `NEVER`.
           
        -->
        <active>ALWAYS</active>

        <!--
          Defines the connection timeout in seconds.
          Defaults to `20`.
          
        -->
        <connectTimeout>20</connectTimeout>

        <!--
          Defines the read timeout in seconds.
          Defaults to `60`.
          
        -->
        <readTimeout>60</readTimeout>

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

        <!--
          The username required for authorization.
           
        -->
        <username>__USE_ENVIRONMENT_VARIABLE__</username>

        <!--
          Password for login into the repository.
           
        -->
        <password>__USE_ENVIRONMENT_VARIABLE__</password>

        <!--
          The authorization method to use.
          Supported values are [`NONE`, `BASIC`, `BEARER`].
          `Basic` requires both username & password.
          `BEARER` requires a token (set as password).
          Defaults to `NONE`.
          
        -->
        <authorization>BASIC</authorization>

        <!--
          A list of assets to be downloaded.
          
        -->
        <assets>
          <asset>
            <!--
              Full download path to asset.
               
            -->
            <input>https://artifacts.acme.com/logos/logo-256x256.png</input>

            <!--
              Local path where asset will be downloaded to.
              Defaults to `#{jreleaser.downloadDirectory}/#{downloader.name}`.
               
            -->
            <output>{{projectName}}.png</output>

            <!--
              Unpack options
              
            -->
            <unpack>
              <!--
                Unpack input archive when `true`.
                Defaults to `false`.
                
              -->
              <enabled>false</enabled>

              <!--
                Skip the archive's root entry from the unpacked directory when `true`.
                Defaults to `false`.
                
              -->
              <skipRootEntry>false</skipRootEntry>
            </unpack>
          </asset>
        </assets>
      </app>
    </http>
  </download>
</jreleaser>
jreleaser {
  // 
  download {
    // 
    http {
      // Downloaders require a name.
      // 
      app {

        // Enables or disables the downloader.
        // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        // Defaults to `NEVER`.
        //  
        active = 'ALWAYS'

        // Defines the connection timeout in seconds.
        // Defaults to `20`.
        // 
        connectTimeout = 20

        // Defines the read timeout in seconds.
        // Defaults to `60`.
        // 
        readTimeout = 60

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

        // The username required for authorization.
        //  
        username = '__USE_ENVIRONMENT_VARIABLE__'

        // Password for login into the repository.
        //  
        password = '__USE_ENVIRONMENT_VARIABLE__'

        // The authorization method to use.
        // Supported values are [`NONE`, `BASIC`, `BEARER`].
        // `Basic` requires both username & password.
        // `BEARER` requires a token (set as password).
        // Defaults to `NONE`.
        // 
        authorization = 'BASIC'

        // A list of assets to be downloaded.
        // 
        asset {
          // Full download path to asset.
          //  
          input = 'https://artifacts.acme.com/logos/logo-256x256.png'

          // Local path where asset will be downloaded to.
          // Defaults to `#{jreleaser.downloadDirectory}/#{downloader.name}`.
          //  
          output = '{{projectName}}.png'

          // Unpack options
          // 
          unpack {
            // Unpack input archive when `true`.
            // Defaults to `false`.
            // 
            enabled = false

            // Skip the archive's root entry from the unpacked directory when `true`.
            // Defaults to `false`.
            // 
            skipRootEntry = false
          }
       }
      }
    }
  }
}

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

active

jreleaser.download.http.${name}.active
jreleaser.download.http.active

JRELEASER_DOWNLOAD_HTTP_${name}_ACTIVE
JRELEASER_DOWNLOAD_HTTP_ACTIVE

username

jreleaser.download.http.${name}.username
jreleaser.download.http.username
jreleaser.http.${name}.username
jreleaser.http.username

JRELEASER_DOWNLOAD_HTTP_${name}_USERNAME
JRELEASER_DOWNLOAD_HTTP_USERNAME
JRELEASER_HTTP_${name}_USERNAME
JRELEASER_HTTP_USERNAME

password

jreleaser.download.http.${name}.password
jreleaser.download.http.password
jreleaser.http.${name}.password
jreleaser.http.password

JRELEASER_DOWNLOAD_HTTP_${name}_PASSWORD
JRELEASER_DOWNLOAD_HTTP_PASSWORD
JRELEASER_HTTP_${name}_PASSWORD
JRELEASER_HTTP_PASSWORD

Substitute ${name} for the value of the named instance.

Space (' '), underscore (_), and dash (-) will be replaced by dot (.) to separate tokens in the System property. Space (' '), dash (-), and dot (.) will be replaced by underscore (_) to separate tokens in the environment variable, such that:

${name} System Property Environment Variable

foobar

foobar

FOOBAR

fooBar

foobar

FOOBAR

foo bar

foo.bar

FOO_BAR

foo-bar

foo.bar

FOO_BAR

foo_bar

foo.bar

FOO_BAR

foo.bar

foo.bar

FOO_BAR

Example

download:
  http:
    my_downloader:
      assets:
        - input: https://github.com/jreleaser/jreleaser/raw/main/src/media/icon_256x256.png
          output: '{{projectName}}.png'
        - input: https://github.com/jreleaser/jreleaser/releases/download/v1.0.0/jreleaser-{{projectVersion}}.zip
          unpack:
            enabled: true