Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Changed the `maven-publish` and `ivy-publish` plugins to do a better job of calculating the coordinates to use to represent a project dependency in the generated metadata files. Previously, the plugins would fail when there were multiple publications in the target project with different coordinates. Now, the plugins will ignore publications that contain the variants of some other component that is included in another publication.

The C++ plugins use this to inform the publishing plugins (and whatever else cares) which publication is the 'main' publication of the project. The main publication holds details of the component as a whole and is intended to be the 'entry point' for the component.

Using this allows a not-quite-correct workaround to be removed from the C++ plugins and that project dependencies are mapped to coordinates in a consistent way for both C++ and Java components, by shared logic.

  1. … 7 more files in changeset.
Revert De-duplicate commonly used immutable objects in dependency resolution and IDE changes

Commits reverted:

- 807b1e4f8d1585d93c1de3e9ca83d99d0819e2d2

- 9482b0b05374253cafdb776550d7016385912e04

- 4ecead06b53ec6b0f15c517bf0d0c6a74c3b3c05

- db1135a8a5f1c507e0df3c03ad12ddc963799e4d

- 7350bcbae30a777909cec74ebfd5a91d2c89081e

Additionally, minor changes to avoid usage of introduced

classes and methods from subsequent commits.

Issue: gradle/gradle-private#563

  1. … 109 more files in changeset.
De-duplicate (= intern) some instances in dependency resolution

- Reduce memory usage of dependency resolution by de-duplicating the

most commonly used immutable instances.

- Objects aren't strictly immutable: displayName is calculated lazily

- solution is thread-safe without synchronization

- lazy calculation is needed for efficient interning since a lookup

will always create a new instance.

- Use strong references in some instance interners

- strong references cause less GC overhead than weak references

- Strong references:







- Weak references:




- Both reference types:



- The reason for special handing is that DefaultBuildIdentifier

has a state field "current" as part of the instance which

isn't part of equals/hashCode.

+review REVIEW-6277

  1. … 104 more files in changeset.
Revert "Removed `ExtensionContainerInternal` type. It is not used for anything."

This reverts commit 7cbf09e12965fd07c12d4f2fd2600da87c7a25f2 which

caused problems for plugins using `ProjectInternal`.

  1. … 5 more files in changeset.
Removed `ExtensionContainerInternal` type. It is not used for anything.

  1. … 5 more files in changeset.
Fix some tests that were leaking file handles

  1. … 18 more files in changeset.
Don't use common parent class for now

  1. … 12 more files in changeset.
Introduce test fixture of tests using ProjectBuilder

Automatically uses and cleans up temporary project directory.

  1. … 13 more files in changeset.
Make DirectInstantiator a singleton.

  1. … 89 more files in changeset.
Deprecate PluginContainer.apply(Class) and PluginContainer.apply(String)

+review REVIEW-5239

  1. … 101 more files in changeset.
register a "logical" publication whenever a publication is added to `publishing.publications`

  1. … 1 more file in changeset.
renamed HelperUtil to TestUtil (REVIEW-1626)

  1. … 145 more files in changeset.
Merge remote-tracking branch 'remotes/origin/release'

  1. … 11 more files in changeset.
GRADLE-2837: Ensure that a dependency project is fully evaluated before it is used by a referencing project in publishing

  1. … 4 more files in changeset.
Replaced PublicationCoordinates with ModuleVersionIdentifier.

  1. … 8 more files in changeset.
Project dependencies map to a single publication of the depended-on project - For single publication, use it - For multiple publications, fail unless all publications have the same coordinates - For no publications, use the project coordinates - Added ProjectDependencyPublicationResolver to do the work of determining the coordinates to use for a project dependency

  1. … 20 more files in changeset.
Switch PublicationContainer to use new Polymorphic container infrastructure

  1. … 21 more files in changeset.
REVIEW-924: Made exceptions emitted by PublicationContainer consistent with other container types

  1. … 3 more files in changeset.
Don't use custom exception type where not necessary (REVIEW-924)

  1. … 2 more files in changeset.
Use a single integration test for checking error reporting, and separate unit tests for each error condition (REVIEW:924)

  1. … 1 more file in changeset.
Added GroovyPublicationContainer that extends DefaultPublicationContainer and adds support for publication DSL - Need to review if this is the right way to implement this, and if this should be made into a more generic feature on NamedDomainObjectContainer

  1. … 37 more files in changeset.
Remove ignored test method.

Add “publish” lifecycle task in “publishing” plugin for concrete publish tasks to hang off.

  1. … 8 more files in changeset.
Move tests to live in the same package as what they test.

  1. … 8 more files in changeset.
Don't use a RepositoryHandler for publishing.repositories, use a named object container of ArtifactRepository.

This avoids a bunch of awkwardness that stems from the name of the repository being far more important in publication than consumption. It also avoids propagating the RepositoryHandler API to a new place.

When just the “publishing” plugin is applied, repositories cannot be created. When the “ivy-publish” plugin is applied, the container creates instances of IvyArtifactRepository. This is ok for the initial release because that's the only type that we can deal with. Looking forward, we'll need to expand the domain container stuff to be polymorphic.

  1. … 10 more files in changeset.
Add package cycle checking to “ivy” and “publish” modules, and break up cycles.

  1. … 22 more files in changeset.
Remove generic Publish task, replaced with IvyPublish that is restricted to Ivy stuff.

This removed the need for any kind of abstract protocol for matching up things that can publish with certain publications (because we know the publication/repository combination is valid) so a bunch of interfaces that enabled this were removed.

  1. … 20 more files in changeset.
Mark test as ignored, as it doesn't work.

This probably should work, but requires deeper changes than I'm willing to make at this stage of the release cycle.

Fix exception message on an uknown publication, and some basic unit tests.

  1. … 1 more file in changeset.
Obtain a RepositoryHandler for publication via DependencyResolutionServices.

This is a bit weird. DependencyManagementServices and friends need some restructuring so we aren't getting publication services through classes with “resolution” in the name.

  1. … 1 more file in changeset.