Skip to content

Releases: sbt/sbt-assembly

2.3.0

06 Oct 23:37
v2.3.0
ec377e5
Compare
Choose a tag to compare

sbt-assembly 2.3.0 is cross published to:

sbt Version Published
1.x
2.0.0-M2

Note: Shading on sbt 2.0.0-M2 requires setting exportJars := false.

sbt 2.x migration

updates

  • fix: Fixes assembly not creating parent directories by @Roiocam in #525
  • fix: Throws error when a misconfigured assemblyOutputPath is detected by @hygt in #523
  • fix: Fixes compililation error on JDK 23 by @xuwei-k in #530

behind the scene

new contributors

Full Changelog: v2.2.0...v2.3.0

2.2.0

14 Mar 04:41
v2.2.0
f2a9845
Compare
Choose a tag to compare

updates

  • Update to jarjar-abrams-core 1.14.0 by @eed3si9n in #522
  • Reduce memory usage by avoiding to buffer entry contents during MergeStrategy.deduplicate by @shuttie in #520

behind the scenes

new contributors

Full Changelog: v2.1.5...v2.2.0

2.1.5

20 Nov 07:44
v2.1.5
64dedc8
Compare
Choose a tag to compare

fixes

behind the scene

new contributors

Full Changelog: v2.1.4...v2.1.5

2.1.4

27 Oct 06:41
v2.1.4
06cc617
Compare
Choose a tag to compare

updates

behind the scene

Full Changelog: v2.1.3...v2.1.4

2.1.3

17 Sep 23:45
v2.1.3
f525e60
Compare
Choose a tag to compare

updates

Full Changelog: v2.1.2...v2.1.3

2.1.2

17 Sep 18:35
v2.1.2
b9b6dad
Compare
Choose a tag to compare

updates

behind the scene

  • Updates README: Updates scala versions in test and README by @xuwei-k in #498
  • Updates README: log4j2 plugin has been updated and re-released by @mpollmeier in #502

new contributors

Full Changelog: v2.1.1...v2.1.2

2.1.1

12 Feb 06:44
v2.1.1
c51d946
Compare
Choose a tag to compare

updates

Full Changelog: v2.1.0...v2.1.1

2.1.0

09 Dec 21:11
v2.1.0
9b59275
Compare
Choose a tag to compare

updates

  • Adds Tags.limit(Assembly.assemblyTag, 1) by default to make assembly task exclusive @ingarabr in #485
  • Fixes file concatenation merge rule by @dragisak in #482

new Contributors

Full Changelog: v2.0.0...v2.1.0

2.0.0

17 Oct 19:59
v2.0.0
1a529bc
Compare
Choose a tag to compare

In-memory processing

sbt-assembly 2.0.0 has been refactored to use in-memory processing of library entries, in contrast to its prior versions where library JAR files were unzipped to disk. This has positive performance implications, especially for large projects, machines with slow disks (i.e. spinning hard drives) or systems with slow file systems such as Windows Subsystem for Linux (WSL1) emulated file access.

This overhaul was contributed by Ben Reyes (@fnqista) in #464.

Breaking changes

  • MergeStrategy.rename behavior was changed. Directories named LICENSE etc will no longer be renamed anymore. If these directories conflict with files named LICENSE etc the files will be renamed to include the assembly jar name (minus the .jar extension) instead.
  • Fails *.class renames via MergeStrategy.rename, where it was a silent no-op previously.
  • assemblyCacheUnzip setting was dropped.
  • excludedFiles field was dropped from AssemblyOption.

Performance improvements

sbt-assembly 2.0.0 generally improves the performance compared to the the previous versions, however the effect of speedup may be dependent on the filesystem and hardware configuration. For example, a Play app that used to take 10s to assemble now assembles in 7s. On Windows, we expect more speedup.

In addition, a new setting called ThisBuild / assemblyRepeatableBuild is introduced:

ThisBuild / assemblyRepeatableBuild := false

The setting is set to true (repeatable) by default, but if set to false, sbt-assembly will parallelize JAR creation for an even faster performance. For instance, a Play app that used to take 10s assembled in 5s on Mac. Your mileage may vary.

CustomMergeStrategy.apply

sbt-assembly 2.0.0 introduces CustomMergeStrategy builder to construct custom merge strategies.

// same as discard
CustomMergeStrategy("custom-discard") { conflicts =>
  Right(Vector.empty)
}

Bug fixes

  • Fixes the reported number of affected files
  • Files that conflict with directories after the merge will now be printed as a clear error message to the user, instead of failing at runtime
  • Fixes the caching directory to reflect the crossVersion, where previously, cross-builds (i.e. 2.12.8, 2.13.8) shared the same cache directory.
  • Fixes Windows problems (#472) by @fnqista in #478
  • Runs CI on Windows by @nightscape in #471
  • Removes excessive "=" sign in launch script cmd by @DagoDragony in #468

New Contributors

Full Changelog: v1.2.0...v2.0.0

2.0.0-RC1

02 May 00:16
v2.0.0-RC1
592fe87
Compare
Choose a tag to compare
2.0.0-RC1 Pre-release
Pre-release

What's changed

sbt-assembly 2.0.0 has been refactored to use in-memory processing of library entries, in contrast to its prior versions where library JAR files were unzipped to disk. This has positive performance implications, especially for large projects, machines with slow disks (i.e. spinning hard drives) or systems with slow file systems such as Windows Subsystem for Linux (WSL1) emulated file access.

This overhaul was contributed by Ben Reyes (@fnqista) in #464.

Breaking changes

  • MergeStrategy.rename behavior was changed. Directories named LICENSE etc will no longer be renamed anymore. If these directories conflict with files named LICENSE etc the files will be renamed to include the assembly jar name (minus the .jar extension) instead.
  • Fails *.class renames via MergeStrategy.rename, where it was a silent no-op previously.
  • assemblyCacheUnzip setting was dropped.
  • excludedFiles field was dropped from AssemblyOption.

Performance improvements

sbt-assembly 2.0.0-RC1 generally improves the performance compared to the the previous versions, however the effect of speedup may be dependent on the filesystem and hardware configuration. For example, a Play app that used to take 10s to assemble now assembles in 7s. On Windows, we expect more speedup.

In addition, a new setting called ThisBuild / assemblyRepeatableBuild is introduced:

ThisBuild / assemblyRepeatableBuild := false

The setting is set to true (repeatable) by default, but if set to false, sbt-assembly will parallelize JAR creation for an even faster performance. For instance, a Play app that used to take 10s assembled in 5s on Mac. Your mileage may vary.

CustomMergeStrategy.apply

sbt-assembly 2.0.0 introduces CustomMergeStrategy builder to construct custom merge strategies.

// same as discard
CustomMergeStrategy("custom-discard") { conflicts =>
  Right(Vector.empty)
}

Bug fixes

  • Fixes the reported number of affected files
  • Files that conflict with directories after the merge will now be printed as a clear error message to the user, instead of failing at runtime
  • Fixes the caching directory to reflect the crossVersion, where previously, cross-builds (i.e. 2.12.8, 2.13.8) shared the same cache directory.