Skip to content

Latest commit

 

History

History
407 lines (320 loc) · 17.4 KB

CHANGES.md

File metadata and controls

407 lines (320 loc) · 17.4 KB

Changes

Master

Improved

  • 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 by BOOT_CLOJURE_VERSION #230, #469.
  • Corrected docstring for boot.pod/canonical-coord.
  • Throw helpful exception when deftask argument vector isn't a vector #487.

Fixed

  • Print stack trace when core pod fails to load #480.
  • Fix issue where boot.util/map-as-dep would flatten collections like :exclusions in the dependency vector #479.
  • Use default voice when calling say on OSX #476.
  • Fix typo in the notify task that prevented OSX from finding the terminal-notifier program #478.
  • Fix typo in the notify task 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.path and fake.class.path system properties with correct, platform-specific paths #488.
  • Eliminate runtime reflection in boot.core/deftask macro #490.
  • Create bootscript tmpfile with mode 0600 instead of 0664.

Tasks

  • Added the with-cp task — use java -cp style classpath strings instead of Maven dependencies.
  • The pom task now adds :project metadata to the created pom.xml and pom.properties TmpFiles in the fileset. This metadata is used by eg. the jar task to select the "real" pom from multiple poms that might be in the fileset from the uber task, etc. #451
  • The watch task now accepts --include and --exclude options to restrict the set of paths that will trigger a rebuild #312.
  • The watch task now accpets --debounce option to adjust how long it will wait for all filesystem events to have fired before a rebuild is triggered.
API Functions
  • 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 :meta option to boot.core/add-{asset,source,resource} fns (and their add-cached-{asset,source,resource} variants — merges a map of metadata into all TmpFiles added to the fileset.
Boot CLI Parsing
  • 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.
Boot Options
  • 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 — adds org.clojure/clojure as a global exclusion (useful in combination with --dependencies when 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-path and -T, --no-target #475.
Task Options
  • Added -p, --project option to the jar task — 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 the pom task or there are multiple poms created by the pom task in the fileset #451.
  • Added -C, --no-color option to the repl task — disables ANSI color codes in REPL client output.
Boot Environment
  • Removed :target-path #475.

Deprecated

  • The speak task, replaced by notify.

2.6.0

Improved

  • More efficient syncing of project directories with Boot's internal ones.
  • Easier to read tree representation for the show --fileset output.

Fixed

  • Don't set :update :always in aether when resolving Boot's own dependencies unless Boot is being updated.
  • Correctly handle case when :source-paths or :resource-paths are set to the empty set (#{}).
  • Correctly set last modified time when copying classpath resource.

Development

  • Boot test suite (!!!) to test Boot itself, with parallel test runner capability and continuous integration.
API Functions
  • boot.pod/this-pod — a WeakReference to the current pod
  • boot.pod/with-invoke-in — low-level invocation, no serialization
  • boot.pod/with-invoke-worker — as above but invokes in the worker pod
  • boot.pod/pod-name — get/set the name of a pod
  • boot.pod/coord->map — dependency vector to map helper function
  • boot.pod/map->coord — map to dependency vector helper function
  • boot.pod/resource-last-modified — returns last modified time of a classpath resource
  • boot.core/get-checkouts — returns a map of info about loaded checkout dependencies
  • boot.util/dbug* — like boot.util/dbug but a macro (doesn't eval its arguments unless the verbosity level is DEBUG or above)
Boot Options
  • -c, --checkouts boot option / :checkouts env key — deeper integration for checkout dependencies
  • -o, --offline boot option — disable downloading Maven dependencies from remote repositories (doesn't apply to Boot's own dependencies)
  • -U, --update-snapshot boot option — updates boot to latest snapshot version
  • optional argument to -u, --update — sets global default boot version
Task Options
  • -v, --verify-deps option to show task — verify jar signatures and show deps tree [#375][375]
Boot Environment
  • wagon dependencies now accept a :schemes key — specify the handler classes for the wagon when the wagon jar has no leiningen/wagons.clj entry.
  • BOOT_CERTIFICATES — specify file paths for SSL certificates.
  • BOOT_CLOJARS_REPO — specify Maven repo url for clojars.
  • BOOT_CLOJARS_MIRROR — specify Maven mirror url for clojars.
  • BOOT_MAVEN_CENTRAL_REPO — specify Maven repo url for maven-central.
  • BOOT_MAVEN_CENTRAL_MIRROR — specify Maven mirror url for maven-central.

Deprecated

  • The checkout task, replaced by the --checkouts boot option

2.5.5

Fixed

  • Issue with 2.5.4 where it was possible for boot to exit before all files were written to target dir.

2.5.4

Fixed

  • The target task falls back to copying when hardlinks aren't possible #373.
  • Use a ByteArrayInputStream instead of a StringBufferInputStream when parsing pom.xml strings.

2.5.3

Improved

  • Added docstrings to all previously undocumented vars in API namespaces.

2.5.2

Fixed

  • Warn and remove conflicting files from the fileset #361, #364.
  • Restore --as-jars option to uber task that was accidentally removed.
  • Don't try to read pom.xml if there are none in the fileset.
  • Correctly handle extra arguments to clifn and throw on unknown options #346.

Improved

  • Pretty-print boot script when --verbose boot option is specified #315.
  • Copy jars into cache when using the --as-jars option to uber #290.
  • Ignore source files matching regexes specified in .bootignore file #348.

2.5.1

Fixed

  • Misleading warning about BOOT_EMIT_TARGET #356.
  • Cross-device link errors when moving files from temp dirs #362.
  • Issue with --repo-map option for push task #358.
  • Jar task not creating MANIFEST.MF in uberjar #360.
  • Jar task not using "friendly name" when there is exactly one pom.xml.
  • Issue where target task would do nothing when no --dir option given.
  • Add --no-clean option to disable cleaning of destination in target task.
  • Don't throw exception when deftask argument specs are invalid; warn instead.

2.5.0

Breaking

  • The gpg binary 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

  • Added target task and BOOT_EMIT_TARGET env var #305.
  • Added --developers and --dependencies options to pom task #233.
  • Added (ALPHA) send! function to work around issues passing large collections to pods via with-eval-in #339.
  • Added add-cached-{asset,source,resource} core functions.
  • Added launch-nrepl core function for starting repl servers in pods from the repl.
  • Added gpg-decrypt core 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 push task can now be provided with --repo-map option 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 install and push tasks now accept a --pom option which can be used to specify which pom.xml file to use #112, #278.
  • The repl task now accepts a --pod option which can be used to start a repl in a specific pod.
  • The show task now accepts a --list-pods option to show the names of all active pods.

Improved

  • Better uber task performance #94.
  • Better sift task 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.

Fixed

  • Added last modified time to immutable fileset data #72.
  • Resetting fileset merges initial fileset over user source files #330.
  • Throw exception when fileset mv source doesn't exist #325.
  • Prevent duplicate tagging of commits in push task #328.
  • Bind *compile-path* in nREPL server environment #294.
  • Updated tools.nrepl version 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 --file option that contain multiple pom.xml files are now named project.jar instead of named for coordinates derived from an arbitrarily selected pom #278.
  • Installing or pushing a jar without the --pom option that contains more than one pom.xml now results in an exception instead of installing to coordinates derived from an arbitrarily selected pom #278.
  • Stream Closed exceptions when multiple pod pools are used #270

Deprecated

  • The push task option --gpg-keyring.
  • Implicit writing of artifacts to target directory.

2.4.2

  • 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)

2.4.1

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"
    

2.4.0

  • 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).

2.3.0

  • 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.

2.2.0

  • 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_REPO environment variable on Windows (fixes #243).
  • Make Clojure artifact name customizable via BOOT_CLOJURE_NAME environment variable, which defaults to org.clojure/clojure.