Changelog
You may define either content
or contentTemplate
, with the latter taking precedence over the former.
Changelog formatting applies only to the automatically generated changelog, that is, formatting won’t occur if the external
property is set. Format applies only to local commits at the moment, the use of labelers is highly encouraged.
The changelog.format
property only accepts the following name templates:
Key | Description |
---|---|
commitShortHash |
head commit hash abbreviated to 7 characters |
commitFullHash |
head commit hash |
commitTitle |
first line of the commit message |
commitAuthor |
full name of the commit author |
commitsUrl |
commits URl as provided by the Git host |
The content
and contentTemplate
accept all Name Templates, take special consideration on
{{changelogChanges}}
and {{changelogContributors}}
as they define the parsed commits.
Templates
The default location for templates is:
src/jreleaser/templates
The following list shows the filenames that may be used to override default templates:
-
changelog.tpl
Commits
If you wish to generate the changelog between two tags, with tags in between, you may configure previousTagName
.
It generates the changelog based on all commits between the two tags. (git log <previousTagName>…<tagName>
).
If not defined, it will default to the logical previous tag of the defined tagName
.
Contributors
Contributor names are added to the formatted changelog by default. You may choose to provide a custom format or disable
this behavior completely. The contributors.format
property accepts the following templates:
Key | Description |
---|---|
contributorName |
the contributor’s name as plain text |
contributorNameAsLink |
the contributor’s name as a link |
contributorUsername |
the contributor’s username as plain text |
contributorUsernameAsLink |
the contributor’s username as a link |
The use of {{contributorNameAsLink}}
, {{contributorUsername}}
, or {{contributorUsernameAsLink}}
incurs on a
network call to the remote service to find out information related to the given contributor.
Use a - or * character as prefix in format to list each contributor on its own row.
|
The following configuration
release:
github:
username: aalmiray
overwrite: true
draft: false
sign: true
changelog:
formatted: ALWAYS
format: '- {{commitShortHash}} {{commitTitle}}'
labelers:
- label: 'feature'
title: 'Resolves #'
body: 'Resolves #'
- label: 'issue'
title: 'Fixes #'
body: 'Fixes #'
- label: 'issue'
title: 'Relates to #'
body: 'Relates to #'
- label: 'task'
title: '[chore]'
categories:
- title: '๐ Features'
key: 'features'
labels:
- 'feature'
- title: 'โ
Issues'
key: 'issues'
labels:
- 'issue'
- title: '๐งฐ Tasks'
key: 'tasks'
labels:
- 'task'
replacers:
- search: '\[chore\] '
Generates a changelog similar to

Order
Both labelers and categories will be ordered based on their declared location however you may change this order by
explicitly setting a value for their order
property. The lower the number the higher the priority. The value of the
order
property must be unique.
Presets
Presets define conventions applicable to:
-
labelers
-
categories
-
replacers
-
hide
-
categories
-
contributors
-
You may apply a preset while at the same time define additional elements. Your configuration takes precedence over the preset’s, allowing you to add/merge. For the time being you can’t remove a setting defined by a preset.
Conventional Commits
Commit messages that follow the Conventional Commits specification will be automatically labeled and categorized. The following table shows mappings that you may use when this preset is applied:
Category | Key | Order | Label | Prefix | Order |
---|---|---|---|---|---|
๐ Merge |
merge |
0 |
merge |
Merge pull |
0 |
๐ Merge |
merge |
0 |
merge |
Merge branch |
5 |
๐ Features |
features |
10 |
feat |
feat: |
50 |
๐ Fixes |
fixes |
20 |
fix |
fix: |
60 |
๐ Changes |
changes |
30 |
perf |
perf: |
70 |
๐ Changes |
changes |
30 |
refactor |
refactor: |
80 |
๐ Changes |
changes |
30 |
revert |
revert: |
90 |
๐ Changes |
changes |
30 |
style |
style: |
100 |
๐งฐ Tasks |
tasks |
40 |
chore |
chore: |
20 |
๐ Build |
build |
50 |
test |
test: |
110 |
๐ Build |
build |
50 |
build |
build: |
10 |
๐ Build |
build |
50 |
ci |
ci: |
30 |
๐ Documentation |
docs |
60 |
docs |
docs: |
40 |
You may define an optional scope as part of the prefix, such as fix(core)
or feat(plugins)
. A !
in the prefix will
be replaced with a ๐จ emoji. All prefixes will be removed except for their scope. The following commits
feat: Add download urls
fix: Fix typos
fix(core): Add missing checks in loader
fix(engine)!: Plugins require custom classloader
Will be rendered as
## Features
3adf1b5 Add download urls
## Fixes
47e2a81 Fix typos
ea65d99 (core) Add missing checks in loader
8ac258c ๐จ (engine) Plugins require custom classloader
Use the key value to match a category and change its settings.
|
Example
The following configuration
release:
github:
changelog:
formatted: ALWAYS
preset: 'conventional-commits'
format: '- {{commitShortHash}} {{commitTitle}}'
For a project with the following commits
* bda315f (HEAD -> main, upstream/main) docs: Add missing "`". (#1048)
* 3adf1b5 fix: Do not force .java suffix for Quarkus based templates (#1039)
* 013f328 feat: Startup scripts now use User-Agent header for downloads (#1037)
* 47e2a81 fix: This fixes extraneous jbang.cmd output (#1041)
* fe08627 refactor: Simplified `jbang.cmd` (#1038)
* ea65d99 fix: add hint to user they can get updated catalog using --fresh (#1040)
* 8ac258c fix: No longer pass Accept header (#1036)
* 95a715e [patch] fix linux based java download
* 275d31a fix: archive type for foojay. Fixes #1035
* d42951d [patch]
* 98866f1 fix: Add itest for issue #1019 (#1033)
* 20514c7 fix: Now really fixed updating on Windows (#1031)
* 9ed4116 [minor]
* fb45502 chore: use jreleaser 0.7
* 7419590 fix: edit now honors JBANG_EDITOR again
* 3955647 fix: Not checking for new version on first run anymore (#1023)
* 5e16e22 fix: jbang edit suggests incorrect command when template renames outโฆ (#1020)
* 3ac5561 fix: --deps now gets special javafx treatments as //DEPS does (#1017)
* 52b2377 fix: Fixed link to "Usage on Windows" (#1026)
* 8d5ea6a fix: Fixed download URL in `jbang` script (#1021)
* b750ebb fix: kotlin edit now link to source rather than cache location (#1015)
* 6f87c70 chore: eliminate warnings from code base (#1011)
* f842666 docs: Update spotless pre-commit hook url (#1009)
* d297667 [patch] fix java 17 downloads
* f6a32db fix: use termurin for java 17
* 43b2c72 chore: remove j'bang from choco name, its just JBang
* da0c971 fix: proper nuget
* 30cf637 (tag: v0.80.1) [patch]
Generates a changelog similar to

Gitmoji
Commit messages that follow the Gitmoji convention will be automatically labeled and categorized. The following table shows mappings that you may use when this preset is applied:
Category | Key | Order | Label | Emoji | Keyword |
---|---|---|---|---|---|
๐ Merge |
merge |
0 |
merge |
๐ |
:twisted_rightwards_arrows: |
๐ Added |
added |
10 |
added |
โจ |
:sparkles: |
๐ Added |
added |
10 |
added |
๐ |
:tada: |
๐ Added |
added |
10 |
added |
โ |
:white_check_mark: |
๐ Added |
added |
10 |
added |
๐ท |
:construction_worker: |
๐ Added |
added |
10 |
added |
๐ |
:chart_with_upwards_trend: |
๐ Added |
added |
10 |
added |
โ |
:heavy_plus_sign: |
๐ Added |
added |
10 |
added |
๐ |
:loud_sound: |
๐๏ธ Changed |
changed |
20 |
changed |
๐จ |
:art: |
๐๏ธ Changed |
changed |
20 |
changed |
โก๏ธ |
:zap: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ |
:lipstick: |
๐๏ธ Changed |
changed |
20 |
changed |
๐จ |
:rotating_light: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ |
:pushpin: |
๐๏ธ Changed |
changed |
20 |
changed |
โป๏ธ |
:recycle: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ง |
:wrench: |
๐๏ธ Changed |
changed |
20 |
changed |
๐จ |
:hammer: |
๐๏ธ Changed |
changed |
20 |
changed |
โช |
:rewind: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ฝ |
:alien: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ |
:truck: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ฑ |
:bento: |
๐๏ธ Changed |
changed |
20 |
changed |
โฟ๏ธ |
:wheelchair: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ฌ |
:speech_balloon: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ |
:card_file_box: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ธ |
:children_crossing: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ |
:building_construction: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ฑ |
:iphone: |
๐๏ธ Changed |
changed |
20 |
changed |
๐ฆ |
:package: |
๐จ Breaking |
breaking |
30 |
breaking_changes |
๐ฅ |
:boom: |
๐ฅ Deprecated |
deprecated |
40 |
deprecated |
๐ |
:wastebasket: |
๐ Removed |
removed |
50 |
Removed |
โ |
:heavy_minus_sign: |
๐ Removed |
removed |
50 |
Removed |
๐ฅ |
:fire: |
๐ Removed |
removed |
50 |
Removed |
๐ |
:mute: |
๐ Removed |
removed |
50 |
Removed |
โฐ๏ธ |
:coffin: |
๐ Fixed |
fixed |
60 |
fixed |
๐ |
:bug: |
๐ Fixed |
fixed |
60 |
fixed |
๐ |
:ambulance: |
๐ Fixed |
fixed |
60 |
fixed |
๐ |
:apple: |
๐ Fixed |
fixed |
60 |
fixed |
๐ |
:green_apple: |
๐ Fixed |
fixed |
60 |
fixed |
๐ง |
:penguin: |
๐ Fixed |
fixed |
60 |
fixed |
๐ |
:checkered_flag: |
๐ Fixed |
fixed |
60 |
fixed |
๐ค |
:robot: |
๐ Fixed |
fixed |
60 |
fixed |
๐ |
:green_heart: |
๐ Fixed |
fixed |
60 |
fixed |
โ๏ธ |
:pencil2: |
๐ Fixed |
fixed |
60 |
fixed |
๐ฉน๏ธ |
:adhesive_bandage: |
๐๏ธ Security |
security |
70 |
security |
๐๏ธ |
:lock: |
๐๏ธ Security |
security |
70 |
security |
๐ |
:passport_control: |
๐ฆ Dependencies |
deps |
80 |
dependencies |
โฌ๏ธ |
:arrow_up: |
๐ฆ Dependencies |
deps |
80 |
dependencies |
โฌ๏ธ |
:arrow_down: |
๐ Documentation |
docs |
90 |
documentation |
๐ |
:pencil: |
๐ Documentation |
docs |
90 |
documentation |
๐ |
:memo: |
๐ Documentation |
docs |
90 |
documentation |
๐ |
:globe_with_meridians: |
๐ Documentation |
docs |
90 |
documentation |
๐ |
:page_facing_up: |
๐ Documentation |
docs |
90 |
documentation |
๐ก |
:bulb: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ฉ |
:poop: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ง |
:construction: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ป |
:beers: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ฅ |
:busts_in_silhouette: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐คก |
:clown_face: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ฅ |
:egg: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ |
:see_no_evil: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ธ |
:camera_flash: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
โ๏ธ |
:alembic: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ |
:mag: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ฅ |
:goal_net: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ง |
:monocle_face: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐งช |
:test_tube: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ |
:necktie: |
๐ฒ Miscellaneous |
misc |
100 |
misc |
๐ |
:ok_hand: |
๐ Release |
release |
110 |
release |
๐ |
:rocket: |
๐ Release |
release |
110 |
release |
๐ |
:bookmark: |
The following commit messages are equivalent:
๐ Random number generator always returns 4.
:bug: Random number generator always returns 4.
Keywords are automatically replaced by their corresponding emoji in the generated changelog.
Use the key value to match a category and change its settings.
|
Example
The following configuration
release:
github:
changelog:
formatted: ALWAYS
preset: 'gitmoji'
format: '- {{commitShortHash}} {{commitTitle}}'
For a project with the following commits
* 3dabd57 :bookmark: Release v2.2.0
* a9b1bfe :bug: Fix init command (#204)
* cdf76f9 :pushpin: Upgrade dependencies (#191)
* f7ca721 :memo: Fix the link and update year (#197)
* ceab8dc :sparkles: Add Cargo preset (#199)
* d2ee43d :memo: Change documentation link in README (#196)
* e06e08d :busts_in_silhouette: Add endormi as a contributor (#195)
* 5e0a971 :docs: Add the documentation site (#194)
* 20cf369 :bug: Fix a bug occuring when version is missing in configuration but passed as argument (#190)
* b12dfec :ok_hand: Take care of review
* 9a15406 :goal_net: Handle functional errors
* 4e22239 :pencil: Improve documentation about presets (#189)
* 1febf42 :wrench: Update lock file
* 1635963 :memo: Improve Workflow section (#152)
* a127469 :arrow_up: Upgrade dependencies
Generates a changelog similar to
