Homebrew
The brew
section specifies how the formula should be created. You can check the
Homebrew documentation and the
formula cookbook and
cask-cookbook for more details.
The following artifact extensions are supported by this packager for creating formulae:
-
.jar
-
.zip
The following artifact extensions are supported by this packager for creating casks:
-
.dmg
-
.pkg
-
.zip
Configuration
Legend:
-
required
-
optional
-
may use environment variable
-
accepts Name Templates
#
packagers:
#
brew:
# Enables or disables Homebrew.
# Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
# Defaults to `NEVER`.
#
active: ALWAYS
# Let the release continue if the packager fails.
# Defaults to `false`.
#
continueOnError: true
# Custom download URL.
#
downloadUrl: https://my.server.com/{{projectName}}/{{tagName}}/{{artifactFile}}
# Additional properties used when evaluating templates.
#
extraProperties:
# Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
foo: bar
# Directory with file templates used to prepare the Homebrew distribution.
# Defaults to `src/jreleaser/distributions/#{distribution.name}/brew`.
# If specified, path must exist.
#
templateDirectory: path/to/brew/templates
# List of template files to be skipped.
# Value may be an exact match or a regex.
#
skipTemplates:
- README.md.tpl
# Git author used to commit to the repository.
#
commitAuthor:
# Name used when authoring commits.
# Defaults to `jreleaserbot`.
#
name: jreleaserbot
# E-mail used when authoring commits.
# Defaults to `jreleaser@kordamp.org`.
#
email: jreleaser@kordamp.org
# Git repository to push the formula to.
# Defaults are shown.
#
tap:
# Enables or disables the tap.
# Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
# Defaults to `RELEASE`.
#
active: ALWAYS
# The owner of the tap.
# Defaults to the same owner as the release repository.
#
owner: duke
# The name of the tap.
# Defaults to `homebrew-tap`.
#
name: homebrew-tap
# The tag associated with the formula.
# If left unspecified, will use `{{tagName}}`.
#
tagName: '{{distributionName}}-{{tagName}}'
# The target branch to pull from.
# Defaults to the branch pointed by HEAD.
#
branch: HEAD
# The target branch to push to.
# Defaults to the branch pointed by `#{branch}`.
#
branchPush: '{{projectName}}-{{tagName}}'
# Username used for authoring commits.
# Must have write access to the tap.
# Defaults to the same username as the release repository.
#
username: duke
# Password or OAuth token with write access to the tap.
#
token: __USE_ENVIRONMENT_VARIABLE__
# Message when committing to the tap.
# If left unspecified, `{{distributionName}} {{tagName}}` will be used.
#
commitMessage: '{{distributionName}} {{tagName}}'
# The class name of the generated formula.
# If left unspecified, will use `{{projectNameCapitalized}}`.
#
formulaName: App
# Create a formula that supports OSX & Linux.
# Applicable to distributions of type [`JLINK`, `BINARY`, `FLAT_BINARY`].
# Default is `false`.
#
multiPlatform: false
# Customize the livecheck block.
# Default is empty.
#
livecheck:
- 'url "https://host/sparkle/appcast-release.xml"'
- 'strategy :sparkle'
# A map of Homebrew dependencies.
# A dependency to `openjdk` is automatically added to applicable Java distributions.
#
dependencies:
# key in symbol format
# mapped as `depends_on :key1 => "value1"`
':key1': value1
# plain key
# mapped as `depends_on "key2" => "value2"`
key2: value2
# key in symbol format without value
# mapped as `depends_on :key3`
':key3': 'null'
# plain key without value
# mapped as `depends_on "key4"`
key4: 'null'
# Cask configuration.
# Requires artifact with extension `.dmg` or `.pkg`.
# Defaults are shown.
#
cask:
# Favors producing a cask instead of a formula.
# Default is `false`.
#
enabled: true
# The class name of the generated cask.
# If left unspecified, will use `{{projectName}}`.
#
name: app
# The name of the generated cask.
# If left unspecified, will use `{{brewFormulaName}}`.
#
displayName: App
# Relative path to the .pkg file.
# If left unspecified, will use the filename of the .pkg file.
#
pkgName: app-1.0.0.pkg
# Name of the application folder.
# If left unspecified, will use `{{brewFormulaName}}.app`.
#
appName: App.app
# URL providing an appcast feed to find updates for this Cask.
# Default is empty.
#
appcast: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases.atom
# Procedures to uninstall the Cask.
#
uninstall:
pkgutil:
- com.acme.app
# Additional procedures for a more complete uninstall.
#
zap:
trash:
- '~/Library/Caches/App'
#
[packagers.brew]
# Enables or disables Homebrew.
# Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
# Defaults to `NEVER`.
#
active = "ALWAYS"
# Let the release continue if the packager fails.
# Defaults to `false`.
#
continueOnError = true
# Custom download URL.
#
downloadUrl = "https://my.server.com/{{projectName}}/{{tagName}}/{{artifactFile}}"
# Additional properties used when evaluating templates.
#
extraProperties.foo = "bar"
# Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
# Directory with file templates used to prepare the Homebrew distribution.
# Defaults to `src/jreleaser/distributions/#{distribution.name}/brew`.
# If specified, path must exist.
#
templateDirectory = "path/to/brew/templates"
# List of template files to be skipped.
# Value may be an exact match or a regex.
#
skipTemplates = [ "README.md.tpl" ]
# Git author used to commit to the repository.
# Name used when authoring commits.
# Defaults to `jreleaserbot`.
#
commitAuthor.name = "jreleaserbot"
# E-mail used when authoring commits.
# Defaults to `jreleaser@kordamp.org`.
#
commitAuthor.email = "jreleaser@kordamp.org"
# Git repository to push the formula to.
# Defaults are shown.
# Enables or disables the tap.
# Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
# Defaults to `RELEASE`.
#
tap.active = "ALWAYS"
# The owner of the tap.
# Defaults to the same owner as the release repository.
#
tap.owner = "duke"
# The name of the tap.
# Defaults to `homebrew-tap`.
#
tap.name = "homebrew-tap"
# The tag associated with the formula.
# If left unspecified, will use `{{tagName}}`.
#
tap.tagName = "{{distributionName}}-{{tagName}}"
# The target branch to pull from.
# Defaults to the branch pointed by HEAD.
#
tap.branch = "HEAD"
# The target branch to push to.
# Defaults to the branch pointed by `#{branch}`.
#
tap.branchPush = "{{projectName}}-{{tagName}}"
# Username used for authoring commits.
# Must have write access to the tap.
# Defaults to the same username as the release repository.
#
tap.username = "duke"
# Password or OAuth token with write access to the tap.
#
tap.token = "__USE_ENVIRONMENT_VARIABLE__"
# Message when committing to the tap.
# If left unspecified, `{{distributionName}} {{tagName}}` will be used.
#
tap.commitMessage = "{{distributionName}} {{tagName}}"
# The class name of the generated formula.
# If left unspecified, will use `{{projectNameCapitalized}}`.
#
formulaName = "App"
# Create a formula that supports OSX & Linux.
# Applicable to distributions of type [`JLINK`, `BINARY`, `FLAT_BIINARY`].
# Default is `false`.
#
multiPlatform = false
# Customize the livecheck block.
# Default is empty.
#
livecheck = [
"url 'https://host/sparkle/appcast-release.xml'",
"strategy :sparkle'"
# A map of Homebrew dependencies.
# A dependency to `openjdk` is automatically added to applicable Java distributions.
#
# key in symbol format
# mapped as `depends_on :key1 => "value1"`
dependencies.":key1" = "value1"
# plain key
# mapped as `depends_on "key2" => "value2"`
dependencies.key2 = "value2"
# key in symbol format without value
# mapped as `depends_on :key3`
dependencies.":key3" = "null"
# plain key without value
# mapped as `depends_on "key4"`
dependencies.key4 = "null"
# Cask configuration.
# Requires artifact with extension `.dmg` or `.pkg`.
# Defaults are shown.
#
# Favors producing a cask instead of a formula.
# Default is `false`.
#
cask.enabled = true
# The class name of the generated cask.
# If left unspecified, will use `{{projectName}}`.
#
cask.name = "app"
# The name of the generated cask.
# If left unspecified, will use `{{brewFormulaName}}`.
#
cask.displayName = "App"
# Relative path to the .pkg file.
# If left unspecified, will use the filename of the .pkg file.
#
cask.pkgName = "app-1.0.0.pkg"
# Name of the application folder.
# If left unspecified, will use `{{brewFormulaName}}.app`.
#
cask.appName = "App.app"
# URL providing an appcast feed to find updates for this Cask.
# Default is empty.
#
cask.appcast = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases.atom"
# Procedures to uninstall the Cask.
#
[[packagers.brew.cask.uninstall]]
pkgutil = ["com.acme.app"]
# Additional procedures for a more complete uninstall.
#
[[packagers.brew.cask.zap]]
trash = ["~/Library/Caches/App"]
{
//
"packagers": {
//
"brew": {
// Enables or disables Homebrew.
// Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
// Defaults to `NEVER`.
//
"active": "ALWAYS",
// Let the release continue if the packager fails.
// Defaults to `false`.
//
"continueOnError": true,
// Custom download URL.
//
"downloadUrl": "https://my.server.com/{{projectName}}/{{tagName}}/{{artifactFile}}",
// Additional properties used when evaluating templates.
//
"extraProperties": {
// Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
"foo": "bar"
},
// Directory with file templates used to prepare the Homebrew distribution.
// Defaults to `src/jreleaser/distributions/#{distribution.name}/brew`.
// If specified, path must exist.
//
"templateDirectory": "path/to/brew/templates",
// List of template files to be skipped.
// Value may be an exact match or a regex.
//
"skipTemplates": [
"README.md.tpl"
],
// Git author used to commit to the repository.
//
"commitAuthor": {
// Name used when authoring commits.
// Defaults to `jreleaserbot`.
//
"name": "jreleaserbot",
// E-mail used when authoring commits.
// Defaults to `jreleaser@kordamp.org`.
//
"email": "jreleaser@kordamp.org"
},
// Git repository to push the formula to.
// Defaults are shown.
//
"tap": {
// Enables or disables the tap.
// Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
// Defaults to `RELEASE`.
//
"active": "ALWAYS",
// The owner of the tap.
// Defaults to the same owner as the release repository.
//
"owner": "duke",
// The name of the tap.
// Defaults to `homebrew-tap`.
//
"name": "homebrew-tap",
// The tag associated with the formula.
// If left unspecified, will use `{{tagName}}`.
//
"tagName": "{{distributionName}}-{{tagName}}",
// The target branch to pull from.
// Defaults to the branch pointed by HEAD.
//
"branch": "HEAD",
// The target branch to push to.
// Defaults to the branch pointed by `#{branch}`.
//
"branchPush": "{{projectName}}-{{tagName}}",
// Username used for authoring commits.
// Must have write access to the tap.
// Defaults to the same username as the release repository.
//
"username": "duke",
// Password or OAuth token with write access to the tap.
//
"token": "__USE_ENVIRONMENT_VARIABLE__",
// Message when committing to the tap.
// If left unspecified, `{{distributionName}} {{tagName}}` will be used.
//
"commitMessage": "{{distributionName}} {{tagName}}"
},
// The class name of the generated formula.
// If left unspecified, will use `{{projectNameCapitalized}}`.
//
"formulaName": "App",
// Create a formula that supports OSX & Linux.
// Applicable to distributions of type [`JLINK`, `BINARY`, `FLAT_BIINARY`].
// Default is `false`.
//
"multiPlatform": false,
// Customize the livecheck block.
// Default is empty.
//
"livecheck": [
"url 'https://host/sparkle/appcast-release.xml'",
"strategy :sparkle"
],
// A map of Homebrew dependencies.
// A dependency to `openjdk` is automatically added to applicable Java distributions.
//
"dependencies": {
// key in symbol format
// mapped as `depends_on :key1 => "value1"`
":key1": "value1",
// plain key
// mapped as `depends_on "key2" => "value2"`
"key2": "value2",
// key in symbol format without value
// mapped as `depends_on :key3`
":key3": "null",
// plain key without value
// mapped as `depends_on "key4"`
"key4": "null"
},
// Cask configuration.
// Requires artifact with extension `.dmg` or `.pkg`.
// Defaults are shown.
//
"cask": {
// Favors producing a cask instead of a formula.
// Default is `false`.
//
"enabled": true,
// The class name of the generated cask.
// If left unspecified, will use `{{projectName}}`.
//
"name": "app",
// The name of the generated cask.
// If left unspecified, will use `{{brewFormulaName}}`.
//
"displayName": "App",
// Relative path to the .pkg file.
// If left unspecified, will use the filename of the .pkg file.
//
"pkgName": "app-1.0.0.pkg",
// Name of the application folder.
// If left unspecified, will use `{{brewFormulaName}}.app`.
//
"appName": "App.app",
// URL providing an appcast feed to find updates for this Cask.
// Default is empty.
//
"appcast": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases.atom",
// Procedures to uninstall the Cask.
//
"uninstall": {
"pkgutil": {
"com.acme.app"
}
},
// Additional procedures for a more complete uninstall.
//
"zap": {
"trash": {
"~/Library/Caches/App"
}
}
}
}
}
}
<jreleaser>
<!--
-->
<packagers>
<!--
-->
<brew>
<!--
Enables or disables Homebrew.
Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
Defaults to `NEVER`.
-->
<active>ALWAYS</active>
<!--
Let the release continue if the packager fails.
Defaults to `false`.
-->
<continueOnError>true</continueOnError>
<!--
Custom download URL.
-->
<downloadUrl>https://my.server.com/{{projectName}}/{{tagName}}/{{artifactFile}}</downloadUrl>
<!--
Additional properties used when evaluating templates.
-->
<extraProperties>
<!--
Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
-->
<foo>bar</foo>
</extraProperties>
<!--
Directory with file templates used to prepare the Homebrew distribution.
Defaults to `src/jreleaser/distributions/#{distribution.name}/brew`.
If specified, path must exist.
-->
<templateDirectory>path/to/brew/templates</templateDirectory>
<!--
List of template files to be skipped.
Value may be an exact match or a regex.
-->
<skipTemplates>
<skipTemplate>README.md.tpl</skipTemplate>
</skipTemplates>
<!--
Git author used to commit to the repository.
-->
<commitAuthor>
<!--
Name used when authoring commits.
Defaults to `jreleaserbot`.
-->
<name>jreleaserbot</name>
<!--
E-mail used when authoring commits.
Defaults to `jreleaser@kordamp.org`.
-->
<email>jreleaser@kordamp.org</email>
</commitAuthor>
<!--
Git repository to push the formula to.
Defaults are shown.
-->
<tap>
<!--
Enables or disables the tap.
Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
Defaults to `RELEASE`.
-->
<active>ALWAYS</active>
<!--
The owner of the tap.
Defaults to the same owner as the release repository.
-->
<owner>duke</owner>
<!--
The name of the tap.
Defaults to `homebrew-tap`.
-->
<name>homebrew-tap</name>
<!--
The tag associated with the formula.
If left unspecified, will use `{{tagName}}`.
-->
<tagName>{{distributionName}}-{{tagName}}</tagName>
<!--
The target branch to pull from.
Defaults to the branch pointed by HEAD.
-->
<branch>HEAD</branch>
<!--
The target branch to push to.
Defaults to the branch pointed by `#{branch}`.
-->
<branchPush>{{projectName}}-{{tagName}}</branchPush>
<!--
Username used for authoring commits.
Must have write access to the tap.
Defaults to the same username as the release repository.
-->
<username>duke</username>
<!--
Password or OAuth token with write access to the tap.
-->
<token>__USE_ENVIRONMENT_VARIABLE__</token>
<!--
Message when committing to the tap.
If left unspecified, `{{distributionName}} {{tagName}}` will be used.
-->
<commitMessage>{{distributionName}} {{tagName}}</commitMessage>
</tap>
<!--
The class name of the generated formula.
If left unspecified, will use `{{projectNameCapitalized}}`.
-->
<formulaName>App</formulaName>
<!--
Create a formula that supports OSX & Linux.
Applicable to distributions of type [`JLINK`, `BINARY`, `FLAT_BIINARY`].
Default is `false`.
-->
<multiPlatform>false</multiPlatform>
<!--
Customize the livecheck block.
Default is empty.
-->
<livecheck>
<livecheck>url "https://host/sparkle/appcast-release.xml"</livecheck>
<livecheck>strategy :sparkle</livecheck>
</livecheck>
<!--
A map of Homebrew dependencies.
A dependency to `openjdk` is automatically added to applicable Java distributions.
-->
<dependencies>
<!--
key in symbol format
mapped as `depends_on :key1 => "value1"`
-->
<:key1>value1</:key1>
<!--
plain key
mapped as `depends_on "key2" => "value2"`
-->
<key2>value2</key2>
<!--
key in symbol format without value
mapped as `depends_on :key3`
-->
<:key3/>
<!--
plain key without value
mapped as `depends_on "key4"`
-->
<key4/>
</dependencies>
<!--
Cask configuration.
Requires artifact with extension `.dmg` or `.pkg`.
Defaults are shown.
-->
<cask>
// Favors producing a cask instead of a formula.
// Default is `false`.
//
<enabled>true</enabled>
<!--
The class name of the generated cask.
If left unspecified, will use `{{projectName}}`.
-->
<name>app</name>
<!--
The name of the generated cask.
If left unspecified, will use `{{brewFormulaName}}`.
-->
<displayName>App</displayName>
<!--
Relative path to the .pkg file.
If left unspecified, will use the filename of the .pkg file.
-->
<pkgName>app-1.0.0.pkg</pkgName>
<!--
Name of the application folder.
If left unspecified, will use `{{brewFormulaName}}.app`.
-->
<appName>App.app</appName>
<!--
URL providing an appcast feed to find updates for this Cask.
Default is empty.
-->
<appcast>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases.atom</appcast>
<!--
Procedures to uninstall the Cask.
-->
<uninstall>
<pkgutil>
<pkgutil>com.acme.app</pkgutil>
</pkgutil>
</uninstall>
<!--
Additional procedures for a more complete uninstall.
-->
<zap>
<trash>
<trash>~/Library/Caches/App</trash>
</trash>
</zap>
</cask>
</brew>
</packagers>
</jreleaser>
jreleaser {
//
packagers {
//
brew {
// Enables or disables Homebrew.
// Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
// Defaults to `NEVER`.
//
active = 'ALWAYS'
// Let the release continue if the packager fails.
// Defaults to `false`.
//
continueOnError = true
// Custom download URL.
//
downloadUrl = 'https://my.server.com/{{projectName}}/{{tagName}}/{{artifactFile}}'
// Additional properties used when evaluating templates.
// Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
//
extraProperties.put('foo', 'bar')
// Directory with file templates used to prepare the Homebrew distribution.
// Defaults to `src/jreleaser/distributions/#{distribution.name}/brew`.
// If specified, path must exist.
//
templateDirectory = 'path/to/brew/templates'
// List of template files to be skipped.
// Value may be an exact match or a regex.
//
skipTemplate('README.md.tpl')
// Git author used to commit to the repository.
//
commitAuthor {
// Name used when authoring commits.
// Defaults to `jreleaserbot`.
//
name = 'jreleaserbot'
// E-mail used when authoring commits.
// Defaults to `jreleaser@kordamp.org`.
//
email = 'jreleaser@kordamp.org'
}
// Git repository to push the formula to.
// Defaults are shown.
//
repoTap {
// Enables or disables the repoTap.
// Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
// Defaults to `RELEASE`.
//
active = 'ALWAYS'
// The owner of the repoTap.
// Defaults to the same owner as the release repository.
//
repoOwner = 'duke'
// The name of the repoTap.
// Defaults to `homebrew-tap`.
//
name = 'homebrew-tap'
// The tag associated with the formula.
// If left unspecified, will use `{{tagName}}`.
//
tagName = '{{distributionName}}-{{tagName}}'
// The target branch to pull from.
// Defaults to the branch pointed by HEAD.
//
branch = 'HEAD'
// The target branch to push to.
// Defaults to the branch pointed by `#{branch}`.
//
branchPush = '{{projectName}}-{{tagName}}'
// Username used for authoring commits.
// Must have write access to the repoTap.
// Defaults to the same username as the release repository.
//
username = 'duke'
// Password or OAuth token with write access to the repoTap.
//
token = '__USE_ENVIRONMENT_VARIABLE__'
# Message when committing to the repoTap.
# If left unspecified, `{{distributionName}} {{tagName}}` will be used.
#
commitMessage = '{{distributionName}} {{tagName}}'
}
// The class name of the generated formula.
// If left unspecified, will use `{{projectNameCapitalized}}`.
//
formulaName = 'App'
// Create a formula that supports OSX & Linux.
// Applicable to distributions of type [`JLINK`, `BINARY`, `FLAT_BIINARY`].
// Default is `false`.
//
multiPlatform = false
// Customize the livecheck block.
// Default is empty.
//
livecheck = [
'url "https://host/sparkle/appcast-release.xml"',
'strategy :sparkle']
// A map of Homebrew dependencies.
// A dependency to `openjdk` is automatically added to applicable Java distributions.
//
dependencies {
// key in symbol format
// mapped as `depends_on :key1 => "value1"`
dependency(':key1', 'value1')
// plain key
// mapped as `depends_on "key2" => "value2"`
dependency('key2', 'value2')
// key in symbol format without value
// mapped as `depends_on :key3`
dependency(':key3')
// plain key without value
// mapped as `depends_on "key4"`
dependency('key4')
}
// Cask configuration.
// Requires artifact with extension `.dmg` or `.pkg`.
// Defaults are shown.
//
cask {
// Favors producing a cask instead of a formula.
// Default is `false`.
//
enabled = true
// The class name of the generated cask.
// If left unspecified, will use `{{projectName}}`.
//
name = 'app'
// The name of the generated cask.
// If left unspecified, will use `{{brewFormulaName}}`.
//
displayName = 'App'
// Relative path to the .pkg file.
// If left unspecified, will use the filename of the .pkg file.
//
pkgName = 'app-1.0.0.pkg'
// Name of the application folder.
// If left unspecified, will use `{{brewFormulaName}}.app`.
//
appName = 'App.app'
// URL providing an appcast feed to find updates for this Cask.
// Default is empty.
//
appcast = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases.atom'
// Procedures to uninstall the Cask.
//
uninstall = [
pkgutil: [
'com.acme.app'
]
]
// Additional procedures for a more complete uninstall.
//
zap = [
trash: [
'~/Library/Caches/App'
]
]
}
}
}
}
Formula names must be unique! |
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.
Inside packagers
section
System Property | Environment Variable |
---|---|
active |
|
jreleaser.packagers.brew.active |
JRELEASER_PACKAGERS_BREW_ACTIVE |
Inside distributions
section
System Property | Environment Variable |
---|---|
active |
|
jreleaser.distributions.${name}.brew.active |
JRELEASER_DISTRIBUTIONS_${name}_BREW_ACTIVE |
tap.active |
|
jreleaser.distributions.${name}.brew.tap.active |
JRELEASER_DISTRIBUTIONS_${name}_BREW_TAP_ACTIVE |
tap.username |
|
jreleaser.distributions.${name}.brew.tap.username |
JRELEASER_DISTRIBUTIONS_${name}_BREW_TAP_USERNAME |
tap.token |
|
jreleaser.distributions.${name}.brew.tap.token |
JRELEASER_DISTRIBUTIONS_${name}_BREW_TAP_TOKEN |
tap.branch |
|
jreleaser.distributions.${name}.brew.tap.branch |
JRELEASER_DISTRIBUTIONS_${name}_BREW_TAP_BRANCH |
tap.branchPush |
|
jreleaser.distributions.${name}.brew.tap.branch.push |
JRELEASER_DISTRIBUTIONS_${name}_BREW_TAP_BRANCH_PUSH |
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 |
|
|
foo bar |
|
|
foo-bar |
|
|
foo_bar |
|
|
foo.bar |
|
|
Tokens
The repoTap token environment variable must match with the chosen Release service. |
On GitHub, you can’t use the default
|
DownloadURL
JReleaser follows these rules to find the download URL to use for a given artifact:
-
if
artifact.extraProperties.brewDownloadUrl
exists, use it. -
if
artifact.extraProperties.downloadUrl
exists, use it. -
if explicit
downloadUrl
is set onbrew
, use it. -
if
distribution.extraProperties.brewDownloadUrl
exists, use it. -
if
distribution.extraProperties.downloadUrl
exists, use it. -
if
releaser.${release}.skipRelease
isfalse
then use the releaser’sdownloadUrl
. -
if
releaser.${release}.skipRelease
istrue
then look for a matching uploader given an extraProperty nameddownloadUrlFrom
onartifact
,distribution, `brew
(in that order). The value must be<uploaderType>:<uploaderName>
such as "artifactory:app" or "s3:uploads". -
fail if no suitable URL is found.
With no extra configuration from your side rule 6. will be chosen which is the suitable default that most projects need.
Example
Assuming the current version is 1.2.3
, and a distribution named app
, the above configuration will generate
a app.rb
formula in the duke/homebrew-tap
repository:
class App < Formula
desc "Sample app"
homepage "https://acme.com/app"
version "1.2.3"
url "https://github.com/duke/app/releases/download/v1.2.3/app-1.2.3.zip"
sha256 "812121a64bbd3f49286f7b0be3c9209068f71fcf9541f313708979602e8de466"
license "Apache-2.0"
depends_on "openjdk@8"
def install
libexec.install Dir["*"]
bin.install_symlink "#{libexec}/bin/app"
end
test do
output = shell_output("#{bin}/app --version")
assert_match "1.2.3", output
end
end
JReleaser does not generate a valid homebrew-core formula. The generated formulas are meant to be published as homebrew taps, and in their current form will not be accepted in any of the official homebrew repositories. |
JDK dependency
For Java Binary and Single JAR distributions, a dependency to OpenJDK is added automatically. This can be disabled entirely by adding skipJava
as an extra property on the distribution.
As of JReleaser 1.x, the default is to add a dependency on the specific major JDK version known for the distribution (such as 8 or 17). Later major versions of JReleaser are expected to change this and default to adding a dependency to openjdk without a specific version, as is the usual pattern for Java software on Homebrew. You can explicitly control this by setting the useVersionedJava extra property on the distribution.
|
Casks
Casks require a .zip
, .dmg
or a .pkg
artifact. Distributions that provide more than one of these files can mark which
artifacts should be skipped from being resolved as a Cask candidate by adding a skipBrew
extra property to the target
artifacts.
Templates
The default location for templates is:
src/jreleaser/distributions/<distribution-name>/brew
The following list shows the filenames that may be used to override default templates:
-
cask.rb.tpl
-
formula.rb.tpl
-
formula-multi.rb.tpl
-
README.md.tpl
Any additional files found in the template directories will be copied as is unless their filename ends with .tpl
in
which case Name Templates substitution will take place.
Templates may be initialized using the template
command
Skip Templates
You may skip any template files by defining a set of skip rules in the skipTemplates
property. For example, you may use
any of these expressions to skip a template named README.md.tpl
:
-
README.md.tpl
: matches the full template name -
README.md
: matches the transformed template name -
README.*
: matches using a regex