tasks

Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Publication of resolved versions for Ivy xml

While the feature was added for the Gradle metadata linked to an Ivy

publication, it was missed for the Ivy xml itself.

This commit corrects that, relying on the usage context attributes to

map the Ivy dependency to the requested resolved configuration.

Fixes #8948

  1. … 11 more files in changeset.
Implement Gradle metadata marker in published pom/ivy files

This commit implements a performance optimization for Gradle metadata.

Given that today there's no library published in any repository with

Gradle metadata, it's much more likely to find a POM (or Ivy) metadata

file for an external dependency, rather than a Gradle metadata file.

If we decided to add `gradleMetadata()` sources by default to all

repositories, then we would probably introduce a performance regression

to a lot of builds, because we would first try to get Gradle metadata,

then fail, and search for POM/Ivy files.

To avoid this, whenever a library is going to be published with Gradle

metadata, we will introduce a _marker_ in the published POM or Ivy

file. When Gradle _resolves_ such a dependency, it will parse the POM

file and look for the marker. If it finds it, then it will _redirect_

to use Gradle metadata instead. This means that when Gradle metadata is

present, we will pay the price of looking for a POM or Ivy file first,

start parsing, only to discover we should parse Gradle metadata. This

should be ok in the beginning, knowing that if `gradleMetadata()` is

added, then we would systematically look at Gradle metadata first.

This means that this is a _temporary_ solution, until Gradle metadata

becomes widespread. So "temporary" should be understood as several

months, if not years.

The marker introduced in POM and Ivy files is _neutral_ for both Ivy

and Maven. By this we mean that it uses an XML comment. While not super

nice, we couldn't use a custom namespace because both Ivy and Maven

fail when parsing this. Properties were considered too, but Ivy doesn't

support them so for consistency both models use comments.

It's worth noting that we will still _completely parse_ the POM or Ivy

descriptor. It's a waste of time, but it helps in case we find a marker

but that for some reason the Gradle metadata file is absent. In this

case we fallback on the model we found.

This change also introduces a change in the semantics of the incubating

metadata sources API: those should be considered _hints_, and not strong

statements anymore.

Finally, should a producer want to avoid publishing Gradle metadata,

it's now possible to disable the task that creates the metadata file.

  1. … 57 more files in changeset.
Address review feedback

  1. … 6 more files in changeset.
Add path sensitivity for dynamically added inputs

  1. … 2 more files in changeset.
Add dedicated DSL to customize Ivy descriptor to ivy-publish plugin

This commit adds a type safe DSL for customizing the generated Ivy

module descriptor of an IvyPublication to the ivy-publish plugin:

descriptor {

license {

name = 'The Apache License, Version 2.0'

url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'

}

author {

name = 'Jane Doe'

url = 'http://example.com/users/jane'

}

description {

text = 'A concise description of my library'

homepage = 'http://www.example.com/library'

}

}

Only interfaces are exposed as part of the public API, all of them are

prefixed with `IvyModuleDescriptor`. The exposed properties make use of

the Provider API.

In addition, the new DSL is documented in the User Guide, DSL Reference

and Release Notes.

Resolves #5193.

  1. … 31 more files in changeset.
Mark maven-publish and ivy-publish as stable

This commit removes `@Incubating` from all classes and methods that have been present prior to 4.8. In addition, the User Guide chapters now clearly present the new mechanism as the preferred option. The Release Notes now include a summary of the changes in the Promotions section.

Resolves #4939.

  1. … 37 more files in changeset.
Delegate artifact creation to Publication

Issue: #4943

  1. … 35 more files in changeset.
Publish configuration-wide excludes in Ivy metadata

Resolves #4356.

  1. … 17 more files in changeset.
Remove annotations on private properties

  1. … 10 more files in changeset.
Fix incorrect input declaration

Add missing type safe setters on several tasks

  1. … 13 more files in changeset.
Use old API methods for task inputs and outputs

Will revert deprecation in next commit.

+review REVIEW-6038

  1. … 38 more files in changeset.
Revert "Temporarily reverting everything since 810f052813ea0835dc7e9d3eb87bca005815db64 for 3.0-milestone-1 release"

This reverts commit 506f8ce9d6dc1a81e8ff10575c512778ca2f382a.

  1. … 199 more files in changeset.
Temporarily reverting everything since 810f052813ea0835dc7e9d3eb87bca005815db64 for 3.0-milestone-1 release

  1. … 199 more files in changeset.
Bind task input files to properties

This change introduces a binding between task properties and input files. Input annotations automatically register property values to the corresponding property name.

The `TaskInputs` API gained new methods with an `include` prefix that allow more flexible configuration of input properties, including specifying the property name to bind the files to. The old methods have been deprecated.

Properties that were not assigned a property name will be bound to a sequence of pseudo names like `$1`, `$2` etc.

+review REVIEW-6038

  1. … 33 more files in changeset.
Mark any un-annotated task properties with `@Internal`

+review REVIEW-5932

  1. … 33 more files in changeset.
Use fully-qualified @o.g.a.Incubating in packages

This is a less verbose, less awkward syntax and allows for simpler

programmatic addition / removal when neccessary.

  1. … 35 more files in changeset.
Extracted a super interface out of `FileResolver` and changed a bunch of things to use the new interface.

`FileResolver` drags in a lot of baggage, and a more focused interface allows things to declare which parts they actually need. Also helps bust up some cycles between `FileResolver` and the things it needs.

  1. … 34 more files in changeset.
Use LocalMavenRepositoryLocator to find local repository for 'MavenInstall'

- No longer need to load the Maven settings files specifically for deploying to Maven repositories

- Remove custom task types for new 'maven-publish' plugin

  1. … 23 more files in changeset.
Review items for 'Make branch attribute available when publishing and resolving Ivy modules' story

- Changed extraInfo from a Map to an IvyExtraInfo with a map view

+review REVIEW-5059

  1. … 31 more files in changeset.
Addressing open issues for 'Make branch attribute available when publishing and resolving Ivy modules'

- Adding support for publishing extra info elements

- Change extra info map to use composite key for namespacing

+review REVIEW-5059

  1. … 24 more files in changeset.
Addressing open issues for 'Make branch attribute available when publishing and resolving Ivy modules' - Renaming IvyModuleDescriptor to IvyModuleDescriptorSpec +review REVIEW-5059

  1. … 13 more files in changeset.
First iteration of 'Make branch attribute available when publishing and resolving Ivy modules' story

  1. … 22 more files in changeset.
Moved some service construction out of PublishToIvyRepository task type and into the global scope. Defer lookup until they are required.

  1. … 2 more files in changeset.
Changed a bunch of task types to inject services via properties rather than constructor, so that internal services are not made (quite so) visible to subtypes and can be added or removed in a backwards compatible way, and to defer construction of services until they are used.

  1. … 39 more files in changeset.
Moved some internal classes out of org.gradle.api.internal to live under org.gradle.internal

  1. … 91 more files in changeset.
A bit more detangling of build scoped services:

- Changed PluginServiceRegistry to allow a plugin to provide build scoped services

- Use this to provide DependencyManagementServices instance instead of treating as a special in core's BuildScopeServices.

- Provide IvyContextManager as a global service.

  1. … 14 more files in changeset.
Make sure Ivy context is setup before any Ivy stuff is touched during publishing.

  1. … 4 more files in changeset.
REVIEW-1684: Polishing - Use the internal API instead of implementation class (that's what the internal API was added for!) - Leverage DomainObjectCollection instead of resorting to ugly old Java

  1. … 2 more files in changeset.
Added PublicationAwareRepository to represent a repository that knows how to publish stuff. This allows us to distinguish between converting a repository definition to a DependencyResolver to expose via the DSL for backwards compatiblity purposes, and converting a repository definition to something that can publish. This also allows different types to be used in the DSL and for publishing (we don't make use of this yet).

  1. … 12 more files in changeset.