All notable changes to this project will be documented in this file, which follows the conventions of keepachangelog.com. This project adheres to Semantic Versioning.
...
1.10.1 - 2024-10-15
- Subproject
:clean-targets
will automatically be updated with absolute paths to support running theclean
task as part oflein monolith each
. #99
1.10.0 - 2024-06-03
- Adds higher order task,
with-dependency-set
, that allows running a task with a dependency set defined in the metaproject. #97
- Dependency sets declared in a subproject profile.clj will override the project
:managed-dependencies
rather than concatenating with the metaproject:managed-dependencies
. #97
1.9.1 - 2024-04-17
- Subproject fingerprints now include
:jar-exclusions
in the calculation. #95
1.9.0 - 2023-12-07
- Dependency sets can now be defined in the metaproject, and projects can opt into
them with the
:monolith/dependency-set
key. #93
1.8.0 - 2022-07-13
- Running
lein monolith changed :debug
will now print lots of extra information about what fingerprint values have changed and why. #89 - New
lein monolith show-fingerprints
command will print out detailed information about the fingerprint calculations for one or more projects, compared to an existing mark. #91
- Renamed the
master
branch tomain
. - Dependency fingerprints are now built from normalized hash trees, so changes to the ordering of dependencies or profiles will no longer change the dependency fingerprint. #90
1.7.1 - 2021-06-11
- Bump dependency versions.
1.7.0 - 2021-06-11
- The
:project-dirs
pattern can now support recursive subdirectories with a double-wildcard.../**
syntax. #85
- Fingerprinting will now correctly track Java files as project source files. #87
1.6.1 - 2020-10-09
- The
lint
task now only considers dependency names and versions for detecting conflicts, which should improve the signal-to-noise ratio. #73 - The
unlink
task will now only remove internal checkouts by default. It also accepts an:all
option to remove external checkouts, as well as a list of project names to specifically unlink. #66 #80
- When the
each
task provides a command to resume execution, the arguments will be properly quoted for shells. #27 #72 - The
each
task is now compatible with composite profiles. #29 #77 - When
each
is used with:parallel
, task aliases are now correctly resolved before iteration starts. #36 #74
- The monolith settings can now use
:inherit-raw
and:inherit-leaky-raw
to list keys which should be inherited without interpretation from the metaproject. This is useful for inheriting source paths without them being canonicalized. #68 #75 - The
each
task supports a new:silent
option, which will suppress task output for successful projects. This can be useful in large CI builds where the output is only consulted in the event of failure. #37 #81
1.5.0 - 2020-09-17
- Subproject fingerprints now includes the Java version in the calculation. #71
1.4.0 - 2019-11-08
- When an exception is thrown during an
each :endure
iteration, the stack trace is printed immediately instead of swallowing the error. - When an exception is thrown during an
each :output
iteration, the stack trace is printed in the output file in addition to the combined output. #56 - Subtasks of
do
are resolved before parallel execution, which should ensure they are fully loaded before they are called. - Prevent a potential race condition when combining the
:parallel
and:output
options in theeach
subtask.
- The
graph
subtask supports an:image-path
option to explicitly specify the graph image output, as well as a:dot-path
option to also write the raw dot definition for the graph. - New
deps
subtask supports listing all project dependencies in the monorepo. The output should be suitable for other tooling to consume.
1.3.2 - 2019-10-21
- Subproject dependency calculation now includes dependencies declared in the project's profiles. #51
1.3.1 - 2019-10-14
- Subproject fingerprints now include the project's artifact version in the calculation.
- Subprojects may include a
:monolith/fingerprint-seed
value as a way to force fingerprint invalidations when desired.
1.3.0 - 2019-10-07
- Remove dependency on
puget
for colorized output and canonical printing. This avoids pulling infipp
which is problematic to use in Leiningen on Java 9+. #49
- Allow ANSI color output to be disabled by setting the
LEIN_MONOLITH_COLOR
environment variable tono
,false
, oroff
.
1.2.2 - 2019-09-11
- Adopted cljfmt style rules and added CI style checks.
1.2.1 - 2019-04-25
- Allow the
graph
subtask to take specific targeting options. #43
- The
each
subtask couldn't be composed with subsequent tasks if it had no work to do. #44
1.2.0 - 2019-01-08
- The
each
subtask no longer fails when zero projects are selected.
- The
each
subtask supports:refresh
and:changed
to perform incremental runs over the projects. - New
changed
,mark-fresh
, andclear-fingerprints
subtasks inspect and manipulate the underlying fingerprints used to perform incremental runs.
link
could try to link a project to itself and fail. #41- Bumped puget version to 1.0.3 to support JDK 11.
1.1.0 - 2018-08-17
- The
link
subtask accepts a list of projects to target, allowing you to select which checkout links get created.
- The
graph
subtask could throw an exception when clusters exist at the root of the metaproject. #31
1.0.1 - 2017-05-22
- Metaprojects can specify an
:inherit-leaky
vector to generate a leaky profile for inclusion in subprojects' built artifacts.
This release marks the first stable major release of the plugin. Actual feature
changes are small, but lein-monolith
has seen enough production use to be
considered a mature project.
- New
:output
option toeach
task allows saving individual subproject output to separate files under the given directory.
- Tasks run with
each
now use the subproject's root as the working directory, rather than the monolith root. #21
0.3.2 - 2017-03-21
- Abstracted targeting options to generalize to multiple tasks.
- The
info
task supports targeting options. - The
with-all
task supports targeting options.
- Drop deprecated
:subtree
targeting option.
0.3.1 - 2016-12-14
- Options taking a subproject name now support omitting the namespace component if only one project has that name.
- The
each
task supports additional dependency closure selection options, including:in <projects>
,:upstream
,:upstream-of <projects>
,:downstream
, and:downstream-of <projects>
. - Multiple
:project-selectors
can be provided toeach
in order to chain the filters applied to the targeted projects.
- Option parsing is handled more uniformly within the plugin.
- The
:subtree
option toeach
is deprecated.
- Resolved a potential issue where filtering the targeted subprojects could result in invalid parallel execution order.
0.3.0 - 2016-09-16
- Add
:report
option to theeach
task to print out detailed timing onceeach
completes. - Add
each :parallel <threads>
option to run tasks on subprojects concurrently. Tasks still run in dependency order, but mutually independent projects are run simultaneously on a fixed-size thread pool.
- Modify
each
to print a completion message after subproject tasks finish running. This improves output during parallel execution.
0.2.3 - 2016-08-15
- The
each
task supports an:endure
option to continue iteration in the event of subproject failures. This supports better CI usage for testing.
0.2.2 - 2016-08-08
- The
each
task now adds a:monolith/index
key to project maps passed to the project-selector function to enable mod-distribution logic.
0.2.1 - 2016-08-05
- Split up subtasks into separate namespaces to improve code readability.
- Fix bug where options to
each
weren't output in the continuation command.
- Add
:deep
option to thelink
task to link checkouts for all transitive dependencies. - Add explicit request for garbage-collection before running subproject tasks in
each
iteration. - Warn when
with-all
is used in a subproject.
0.2.0 - 2016-07-20
This release contains a breaking change in how the plugin is configured! All
options are now contained in a required metaproject at the repository root
instead of a separate monolith.clj
file.
This should also be much faster to run due to lazily initializing subprojects instead of loading them all before running any commands.
- Moved monolith configuration into metaproject definition.
- Subprojects are loaded lazily, resulting in dramatically reduced latency before plugin tasks are executed.
- The merged profile now includes
:resource-paths
from each subproject. - The merged profile no longer merges all dependencies; instead, each subproject is included in the profile and dependencies are resolved transitively.
- Metaproject configuration may be inherited using the
:monolith/inherit
key in subprojects and:monolith {:inherit [...]}
in the metaproject. - New
lint
subtask runs the dependency conflict checks which previously ran during every merged profile task. - Added unit tests and continuous-integration via CircleCI.
each
task supports:skip <project>
and:select <filter>
options.
- Setting the
:monolith
key in a project no longer automatically includes the merged profile; instead, it is used for general plugin configuration.
0.1.1 - 2016-07-08
- Fixed a bug in which
each :subtree
would show the wrong number of total subprojects while printing its progress. - Internal projects are now implicit dependencies of the merged monolith profile.
Initial project release