<commit_before>## New and noteworthy

Here are the new features introduced in this Gradle release.

### Easier embedding of Gradle via [Tooling API](userguide/embedding.html)

We are continuously looking for ways to improve the experience of embedding Gradle.
The standard way to embed Gradle, the [Tooling API](userguide/embedding.html) used to ship as multiple Jars, some of which were third-party libraries.
In Gradle 1.4, we refactored the publication and packaging of the Tooling API. It now ships as a single Jar whose only external dependency is SLF4J.
All other third-party dependencies are packaged inside the Jar and shaded to avoid conflicts with the embedder's classpath. Happy embedding! Now go and embed Gradle!

### Dependency resolution improvements

In this release we've continued to improve our dependency resolution, with bug fixes, performance improvements and other tweaks.

These improvements are in addition to the new support for [Dependency Resolve Rules](#hooking-into-dependency-resolution), which give you more control over dependency resolution.

#### Correctly treat Snapshot artifacts with classifiers as 'changing'

Gradle treats any artifact matching the '\*\-SNAPSHOT' pattern as _changing_, which means that we'll check for updated content based on the [cacheChangingModulesFor](dsl/org.gradle.api.artifacts.ResolutionStrategy.html#org.gradle.api.artifacts.ResolutionStrategy:cacheChangingModulesFor) setting.
This strict pattern matching meant that '\*\-SNAPSHOT-sources.jar' and '\*\-SNAPSHOT-javadoc.jar' were not considered _changing_, so these artifacts weren't being updated automatically
on dependency resolution. This issue has now been fixed: see GRADLE-2175 and GRADLE-2218.

#### `--offline` works after resolving against a broken repository

Often the first time you realise a remote repository is down is when Gradle fails to resolve dependencies against that repository. One solution in this case is to switch to running
Gradle in `--offline` mode, so that all resolution will be performed with cached dependencies.
In the past this has been problematic, since Gradle threw away the previously cached value before attempting to retrieve a new one. In 1.4 this has been fixed: Gradle will no longer
throw away a previously cached value when resolving against a broken/missing repository, so you'll be able to switch to `--offline` mode and keep on working. (GRADLE-2364)

#### Performance improvements

We've cut down on the number HTTP requests required to resolve a maven snapshot. We were requesting the `maven-metadata.xml` file multiple times per resolve, now we're only requesting it once. (GRADLE-2585)<commit_msg>Fix line length in release notes<commit_after>## New and noteworthy

Here are the new features introduced in this Gradle release.

### Easier embedding of Gradle via [Tooling API](userguide/embedding.html)

We are continuously looking for ways to improve the experience of embedding Gradle.
The standard way to embed Gradle, the [Tooling API](userguide/embedding.html) used to ship as multiple Jars, some of which were third-party libraries.
In Gradle 1.4, we refactored the publication and packaging of the Tooling API. It now ships as a single Jar whose only external dependency is SLF4J.
All other third-party dependencies are packaged inside the Jar and shaded to avoid conflicts with the embedder's classpath. Happy embedding! Now go and embed Gradle!

### Dependency resolution improvements

In this release we've continued to improve our dependency resolution, with bug fixes, performance improvements and other tweaks.

These improvements are in addition to the new support for [Dependency Resolve Rules](#hooking-into-dependency-resolution), which give you more control over dependency resolution.

#### Correctly treat Snapshot artifacts with classifiers as 'changing'

Gradle treats any artifact matching the '\*\-SNAPSHOT' pattern as _changing_, which means that we'll check for updated content based on the setting of
[cacheChangingModulesFor](/userguide/dependency_management.html#sec:controlling_caching).
This strict pattern matching meant that '\*\-SNAPSHOT-sources.jar' and '\*\-SNAPSHOT-javadoc.jar' were not considered _changing_, so these artifacts weren't being updated automatically
on dependency resolution. This issue has now been fixed: see GRADLE-2175 and GRADLE-2218.

#### `--offline` works after resolving against a broken repository

Often the first time you realise a remote repository is down is when Gradle fails to resolve dependencies against that repository. One solution in this case is to switch to running
Gradle in `--offline` mode, so that all resolution will be performed with cached dependencies.
In the past this has been problematic, since Gradle threw away the previously cached value before attempting to retrieve a new one. In 1.4 this has been fixed: Gradle will no longer
throw away a previously cached value when resolving against a broken/missing repository, so you'll be able to switch to `--offline` mode and keep on working. (GRADLE-2364)

#### Performance improvements

We've cut down on the number HTTP requests required to resolve a maven snapshot. We were requesting the `maven-metadata.xml` file multiple times per resolve, now we're only requesting it once. (GRADLE-2585)
{'fraction_non_alphanumeric': 0.056006034320196116, 'fraction_numerical': 0.00792004525740147, 'mean_word_length': 5.08256880733945, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3302143', 'n_tokens_mistral': 1336, 'n_tokens_neox': 1267, 'n_words': 717}