- Follow symlinks when building fileset from project dirs #483.
- Documented
boot.core/add-cached-{asset,source,resource}fns. - Documented
boot.core/patch!fn #497. - Warn when asked to load a version of Clojure into the core pod (via
:dependencies) that is different from the implicitly loaded version specified byBOOT_CLOJURE_VERSION#230, #469. - Corrected docstring for
boot.pod/canonical-coord. - Throw helpful exception when
deftaskargument vector isn't a vector #487.
- Print stack trace when core pod fails to load #480.
- Fix issue where
boot.util/map-as-depwould flatten collections like:exclusionsin the dependency vector #479. - Use default voice when calling
sayon OSX #476. - Fix typo in the
notifytask that prevented OSX from finding theterminal-notifierprogram #478. - Fix typo in the
notifytask that caused exceptions on OSX #491. - Don't throw exceptions when source files are missing during filesystem patch operations #471, #477.
- Preserve fileset metadata when TmpFiles are overwritten with
add-resource,add-source, etc. - Format paths in
boot.class.pathandfake.class.pathsystem properties with correct, platform-specific paths #488. - Eliminate runtime reflection in
boot.core/deftaskmacro #490. - Create bootscript tmpfile with mode
0600instead of0664.
- Added the
with-cptask — usejava -cpstyle classpath strings instead of Maven dependencies. - The
pomtask now adds:projectmetadata to the created pom.xml and pom.properties TmpFiles in the fileset. This metadata is used by eg. thejartask to select the "real" pom from multiple poms that might be in the fileset from theubertask, etc. #451 - The
watchtask now accepts--includeand--excludeoptions to restrict the set of paths that will trigger a rebuild #312. - The
watchtask now accpets--debounceoption to adjust how long it will wait for all filesystem events to have fired before a rebuild is triggered.
- Added
boot.pod/make-pod-cp— creates a new pod from a given classpath. - Added
boot.pod/canonical-id— returns the canonical form of a maven dependency id symbol. - Added
boot.pod/full-id— returns the fully-qualified form of a maven dependency id symbol. - Added
:metaoption toboot.core/add-{asset,source,resource}fns (and theiradd-cached-{asset,source,resource}variants — merges a map of metadata into all TmpFiles added to the fileset.
- The
[and]characters can now be used to group tasks with their options and, more importantly, positional parameters. In the task body the positional parameters are bound to*args*#374.
- Added
-E, --exclusions— adds symbol to env:exclusions#472. - Added
-f, --file— evaluates the contents of a file just like with the shebang script, but easier to use on platforms like Windows that don't have great shebang support #465. - Added
-i, --init— evaluates a form after evaluating the profile.boot forms but before the main script or build.boot forms #465. - Added
-x, --exclude-clojure— addsorg.clojure/clojureas a global exclusion (useful in combination with--dependencieswhen you don't have a build.boot file, as most dependencies will depend on some random version of clojure and you'll get a warning about it) #230, #469. - Removed
-t, --target-pathand-T, --no-target#475.
- Added
-p, --projectoption to thejartask — specifies the project id when there are multiple pom.xml files — should only be needed in the case where the jar will contain multiple poms and either the desired pom was not created via thepomtask or there are multiple poms created by thepomtask in the fileset #451. - Added
-C, --no-coloroption to therepltask — disables ANSI color codes in REPL client output.
- Removed
:target-path#475.
- The
speaktask, replaced bynotify.
- More efficient syncing of project directories with Boot's internal ones.
- Easier to read tree representation for the
show --filesetoutput.
- Don't set
:update :alwaysin aether when resolving Boot's own dependencies unless Boot is being updated. - Correctly handle case when
:source-pathsor:resource-pathsare set to the empty set (#{}). - Correctly set last modified time when copying classpath resource.
- Boot test suite (!!!) to test Boot itself, with parallel test runner capability and continuous integration.
boot.pod/this-pod— aWeakReferenceto the current podboot.pod/with-invoke-in— low-level invocation, no serializationboot.pod/with-invoke-worker— as above but invokes in the worker podboot.pod/pod-name— get/set the name of a podboot.pod/coord->map— dependency vector to map helper functionboot.pod/map->coord— map to dependency vector helper functionboot.pod/resource-last-modified— returns last modified time of a classpath resourceboot.core/get-checkouts— returns a map of info about loaded checkout dependenciesboot.util/dbug*— likeboot.util/dbugbut a macro (doesn't eval its arguments unless the verbosity level is DEBUG or above)
-c,--checkoutsboot option /:checkoutsenv key — deeper integration for checkout dependencies-o,--offlineboot option — disable downloading Maven dependencies from remote repositories (doesn't apply to Boot's own dependencies)-U,--update-snapshotboot option — updates boot to latest snapshot version- optional argument to
-u,--update— sets global default boot version
-v,--verify-depsoption toshowtask — verify jar signatures and show deps tree [#375][375]
- wagon dependencies now accept a
:schemeskey — specify the handler classes for the wagon when the wagon jar has noleiningen/wagons.cljentry. BOOT_CERTIFICATES— specify file paths for SSL certificates.BOOT_CLOJARS_REPO— specify Maven repo url forclojars.BOOT_CLOJARS_MIRROR— specify Maven mirror url forclojars.BOOT_MAVEN_CENTRAL_REPO— specify Maven repo url formaven-central.BOOT_MAVEN_CENTRAL_MIRROR— specify Maven mirror url formaven-central.
- The
checkouttask, replaced by the--checkoutsboot option
- Issue with 2.5.4 where it was possible for boot to exit before all files were written to target dir.
- The
targettask falls back to copying when hardlinks aren't possible #373. - Use a
ByteArrayInputStreaminstead of aStringBufferInputStreamwhen parsingpom.xmlstrings.
- Added docstrings to all previously undocumented vars in API namespaces.
- Warn and remove conflicting files from the fileset #361, #364.
- Restore
--as-jarsoption toubertask that was accidentally removed. - Don't try to read
pom.xmlif there are none in the fileset. - Correctly handle extra arguments to
clifnand throw on unknown options #346.
- Pretty-print boot script when
--verboseboot option is specified #315. - Copy jars into cache when using the
--as-jarsoption touber#290. - Ignore source files matching regexes specified in
.bootignorefile #348.
- Misleading warning about
BOOT_EMIT_TARGET#356. - Cross-device link errors when moving files from temp dirs #362.
- Issue with
--repo-mapoption forpushtask #358. - Jar task not creating
MANIFEST.MFin uberjar #360. - Jar task not using "friendly name" when there is exactly one pom.xml.
- Issue where
targettask would do nothing when no--diroption given. - Add
--no-cleanoption to disable cleaning of destination intargettask. - Don't throw exception when
deftaskargument specs are invalid; warn instead.
- The
gpgbinary is now used instead of bouncycastle for signing jars and reading encrypted credentials files. There may be different behavior when resolving default keys, etc.
- Added
targettask andBOOT_EMIT_TARGETenv var #305. - Added
--developersand--dependenciesoptions topomtask #233. - Added (ALPHA)
send!function to work around issues passing large collections to pods viawith-eval-in#339. - Added
add-cached-{asset,source,resource}core functions. - Added
launch-nreplcore function for starting repl servers in pods from the repl. - Added
gpg-decryptcore function to decrypt gpg encrypted files. - Added
configure-repositories!core function to configure maven repos dynamically (as a callback to add credentials, etc) #274, #311. - The
pushtask can now be provided with--repo-mapoption to set the deployment repository. This is useful for example in case a repository needs different settings for downloading dependencies and deploying, like additional credentials #274, #311. - The
installandpushtasks now accept a--pomoption which can be used to specify whichpom.xmlfile to use #112, #278. - The
repltask now accepts a--podoption which can be used to start a repl in a specific pod. - The
showtask now accepts a--list-podsoption to show the names of all active pods.
- Better
ubertask performance #94. - Better
sifttask performance. - Better fileset performance.
- Better pod-pool performance #271.
- Better cli option error messages #285 & #322.
- Throw exception when source, resource, or asset paths overlap #235.
- Added last modified time to immutable fileset data #72.
- Resetting fileset merges initial fileset over user source files #330.
- Throw exception when fileset
mvsource doesn't exist #325. - Prevent duplicate tagging of commits in
pushtask #328. - Bind
*compile-path*in nREPL server environment #294. - Updated
tools.nreplversion to support evaluating forms with reader conditionals in the repl #343. - Default jar exclusions no longer exclude
pom.{xml,properties}#278. - Jars built without the
--fileoption that contain multiplepom.xmlfiles are now named project.jar instead of named for coordinates derived from an arbitrarily selected pom #278. - Installing or pushing a jar without the
--pomoption that contains more than onepom.xmlnow results in an exception instead of installing to coordinates derived from an arbitrarily selected pom #278. Stream Closedexceptions when multiple pod pools are used #270
- The
pushtask option--gpg-keyring. - Implicit writing of artifacts to target directory.
- Fix issue where the wrong classloader was being used to load the boot application (270ec3d)
- Make sure exceptions during boot startup are flushed stdout before the process exits (4a20c74)
Fix issues with 2.4.0 release 61c948f
-
Need to delete files in the fileset dirs before writing to them because the underlying blob files are immutable.
-
Remove BOOT_CLOJURE_NAME dependency before adding jars to the classpath--this is a workaround for a really weird issue:
clojure.lang.ExceptionInfo: loader constraint violation: loader (instance of java/net/URLClassLoader) previously initiated loading for a different type with name "clojure/lang/Compiler$Expr"
- Self-downloading binaries--no longer need to manually download this when a new version is released. Also the provided binary works with all versions of boot since 2.0.0 inclusive (fixes #300).
- All boot env vars can now be set in properties files (fixes #229).
- Fix pod memory leaks (fixes #314 & #268).
- Fix issue with Cider and boot's auto-flush PrintWriter (fixes #298).
- Avoid calling javac on a fileset with no Java source files (fixes #309).
- Stop 'boot show -u' from displaying "LATEST" dependencies as out of date.
- Add boot.core/rebuild! function and add -M,--manual option to watch task to manually trigger rebuild from REPL instead of when source files change.
- Fix issue where uber task was trying to explode dependencies that have only a pom file and no jar (fixes #292).
- Improve uber task docstring/help text.
- Add -A/--add-asset, -R/--add-resource, -S/--add-source options to sift task (fixes #212).
- Add new merge strategy for uber task that concatenates duplicates
and use it for merging files in
META-INF/services/.*. - Support merging duplicate files in uber task, defaulting to standard set of mergers. (fixes #217).
- Preserve last modified time of files when unpacking JARs (fixes #211).
- Improvements to pom task (fixes #220, see d8782413).
- Fix file handle leaks when unpacking JAR files. (fixes issues relating to invalid uberjars being generated).
- Add support for .cljc files (see reader conditionals introduced in Clojure 1.7.0).
- Support passing arguments to javac in javac task.
- Update default Clojure version to 1.7.0.
- Fix
BOOT_LOCAL_REPOenvironment variable on Windows (fixes #243). - Make Clojure artifact name customizable via
BOOT_CLOJURE_NAMEenvironment variable, which defaults to org.clojure/clojure.