v2.0.0-RC6-22
Pre-releaseChanges
Drop support for legacy cache location ~/.coursier/cache
From version 2.0.0-RC6-14
up to 2.0.0-RC6-21
, the coursier CLI prints a warning if the legacy cache location (pre Nov 2017),
~/.coursier/cache
is being used, pointing to cache-migration to help migrate to the new cache location.. Support for ~/.coursier/cache
is now dropped altogether.
New configuration directory on macOS
The configuration directory changed from
~/Library/Preferences/Coursier
to
~/Library/Application Support/Coursier
The latter is more correct per the Apple documentation, see the discussion here for more details.
The former location might be deprecated in a late future. Files there are still accepted for the time being.
Fixes
Concurrency issues
- Work around rare "Resource deadlock avoided" errors
- Wait for concurrent downloads when downloading things from bootstraps, instead of loudly failing
Other issues
- Don't crash if the cache directory is a symbolic link
- Don't crash when printing zsh completions from the native launcher
- Accept JDK archives not putting files under
Contents/Home
on macOS, so thatcs java --jvm adopt:1.10.0-2 -version
now works. - Fix handling of
1.
prefix in JVM versions, which was faulty in some cases, so thatcs java --jvm openjdk:10 -version
now works, in particular.
New features
New get
command
Prints the path of a file in the coursier cache, downloading it if necessary. Use like
$ cs get https://repo1.maven.org/maven2/io/get-coursier/coursier-cli_2.12/2.0.0-RC6-21/coursier-cli_2.12-2.0.0-RC6-21.jar
/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cli_2.12/2.0.0-RC6-21/coursier-cli_2.12-2.0.0-RC6-21.jar
Prefer local JVMs over latest ones from the JVM index
In the java
and java-home
commands, when passing short versions like adopt:11
or graalvm:20
, if a valid JVM matching that version is already unpacked locally, it is used straightaway. In particular, if a newer matching version is available per the JVM index, the local one is still preferred. Pass --update
to force using the latest matching version from the index (former behavior).
Less superfluous network requests with applications, and managed JVMs
In the java
and java-home
commands, if a valid JVM is available locally, it is used straightaway (see previous section), and no attempt is made to update the index. Previously, the index was updated if the last check was older than the TTL (24 hours by default). The index is now only checked when --update
is passed.
When passing applications to the resolve
, fetch
, launch
, or bootstrap
commands, like cs launch scala
, the TTL now defaults to Inf
(infinite). That means that if all the necessary files to start an application are in the cache, it is launched straightaway, even if a newer version could have been downloaded. Pass an explicit TTL value to recover the former behavior, like cs launch scala --ttl 24h
.