Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix configuration name

Fix typo

Fix typos

Move some build logic around to decouple projects

The 'packaging' project is now no longer coupled with

'jvm'/'uber-plugins'.

    • -67
    • +0
    ./kotlin/gradlebuild/minify.gradle.kts
    • -116
    • +0
    ./kotlin/gradlebuild/minify/transforms/Minify.kt
    • -1
    • +1
    ./kotlin/gradlebuild/shade/tasks/ShadedJar.kt
    • -1
    • +1
    ./kotlin/gradlebuild/shaded-jar.gradle.kts
  1. … 21 more files in changeset.
Move convention plugins with limited dependencies out of uber-plugins

This will be beneficial when the buildSrc subprojects are moved

into separate included builds. Then these plugins will have a shorter

classpath.

  1. … 3 more files in changeset.
Apply 'jmh' plugin only to projects using it

    • -1
    • +0
    ./kotlin/gradlebuild/shaded-jar.gradle.kts
  1. … 5 more files in changeset.
Cleanup 'packaging' project

- Use pre-compiled script plugins

- Use common package structure

    • -10
    • +10
    ./kotlin/gradlebuild/install.gradle.kts
    • -0
    • +67
    ./kotlin/gradlebuild/minify.gradle.kts
    • -0
    • +116
    ./kotlin/gradlebuild/minify/transforms/Minify.kt
    • -0
    • +27
    ./kotlin/gradlebuild/shade/ArtifactTypes.kt
    • -0
    • +131
    ./kotlin/gradlebuild/shade/tasks/ShadedJar.kt
  1. … 21 more files in changeset.
Simplify install plugin

- Make it a pre-compiled script plugin

- Remove unused extension and custom task

- Do not use taskGraph.whenReady anymore

- Move task declarations from build script into plugin

    • -0
    • +50
    ./kotlin/gradlebuild/install.gradle.kts
  1. … 2 more files in changeset.
Move docs plugin sources to 'gradlebuild' package

  1. … 220 more files in changeset.
Collect plugins about jvm project configuration in 'jvm'

  1. … 20 more files in changeset.
Move 'install' plugin to bundeling

  1. … 1 more file in changeset.
Simplify 'api-metadata' plugin

  1. … 2 more files in changeset.
Isolate and simplify code for determining the current version and name

This is now located in 'module-identity', defining a plugin that is

individually applied by all subprojects.

Groovy code has been translated to Kotlin, duplication has been removed.

The build receipt creation is now handled by the baseServices project,

as that is the place, where it is packaged in the end.

  1. … 19 more files in changeset.
Update wrapper to latest nightly

To profit from https://github.com/gradle/gradle/pull/13505

  1. … 3 more files in changeset.
Improve declaration of artefacts in build logic

- Avoid breaking providers at configuration time

- Avoid using map inputs

  1. … 4 more files in changeset.
Depend on sync task as artifact directly

project.files() -> project.objects.fileCollection()

In our own build logic and in samples.

  1. … 7 more files in changeset.
Introduce GradleDistributionsPlugin and multiple distribution projects

We can now have different distributions, containing different sets of

jars/functionality. For this, one subproject per distribution type is

created. Initially we introduce:

- _core_ (absolute minimum needed to run Gradle)

- _basics_ (Basic functionalities on top of core)

- _jvm_ (Everything needed for JVM ecosystem support)

- _native_ (everything for Native support)

- _publishing_ (everything to publish to Maven/Ivy repositories)

This is just an initial structure which we can now easily change. The

main point here is to enable a setup like this at all. New/different

distributions can now simply be added by adding a new subproject that

applies `gradlebuild.distribution.packaging` and defines the content of

the distribution in terms of dependencies.

Projects needing a distribution for testing, then depend on that project

e.g. `integTestDistributionRuntimeOnly(project(":distributionsJvm"))`

While introducing this, a lot of changes/improvements are done.

(See also previous commits and documentation in code.) Some major things:

- The embedded test runner now no longer supports running against a full

distribution as fallback. This has the advantage that we do not need to

assemble the distribution in embedded running, where the huge majority

of tests does not need it. To allow more tests still to run embedded,

the embedded support with TestKit/KotlinDSL involvement has been

improved. Some tests won't run with the embedded runner at all

now, but compared to the overall amount of tests, these are just a few.

And the "forking" tests always run as part of the PR pipeline.

- Cacheability of tests is highly improved. We broke some things

recently when adding inputs for distributed testing.

These regressions are addressed. Other things were

improved along the line (local Tooling API repo no longer uses timestamp

version, local bin distribution without timestamp for wrapper tests,

sample tests no longer rely on absolute path and timestamp version, ...)

- The `docs.jar` is no longer part of the distribution. It almost had no

content and what it had was runtime metadata and not documentation.

Instead, a distribution project now encapsulates all the runtime

metadata creation and produces a `runtime-api-info.jar` that is specific

to the distribution.

- In the past we had flakiness issues causes by different distributions

sharing the same user home/daemon registry. With the fixed set of

distributions defined, we now use different user home/daemon registry

for each distribution.

- Cross-project configurations are removed. There was some code

central to distribution building and runtime metadata generation that

reached into all subprojects. This is now replaced by using proper

variant aware dependency management to share artifacts between

distribution subprojects and the other subprojects.

  1. … 184 more files in changeset.
Introduce attribute to represent API vs IMPL Gradle module

  1. … 2 more files in changeset.
Define different levels of gradle distributions

These can be used for integration testing where not a full

distribution is needed.

  1. … 13 more files in changeset.
Fix position of 'afterEvaluate' block

  1. … 1 more file in changeset.
Move more things out of root script and document plugins applied in root

  1. … 14 more files in changeset.
Cleanup build script code

- Get rid of usages of "extra"

- Use Kotlin DSL APIs

- Adress or remove outdated TODOs

  1. … 27 more files in changeset.
Fix tooling API metadata - bundling attribute (#12378)

There are two different bundlings used in the metadata:

runtime variant: SHADOWED

sources variant: EXTERNAL

Because of that, a resolution without requested attributes is not able

to identify the 'runtime' variant as the preferred one.

To resolve that, we now set the sources variant to SHADOWED as well to

match the library variant it belongs to. Although it technically does

not contain all the sources of the shadowed classes.

Then legacy behavior like: 'configurations.compile.files'

(resolving the Tooling API directly through the 'compile' configuration)

still works as before. The runtime variant is selected.

This commit also adds integration test coverage:

This includes the typical scenarios - compileClasspath and

runtimeClasspath - and also the case where you just create

a configuration without attributes - similar to resolving

the legacy 'default' or 'compile' configurations.

  1. … 1 more file in changeset.
Fix tooling API metadata - bundling attribute (#12378)

There are two different bundlings used in the metadata:

runtime variant: SHADOWED

sources variant: EXTERNAL

Because of that, a resolution without requested attributes is not able

to identify the 'runtime' variant as the preferred one.

To resolve that, we now set the sources variant to SHADOWED as well to

match the library variant it belongs to. Although it technically does

not contain all the sources of the shadowed classes.

Then legacy behavior like: 'configurations.compile.files'

(resolving the Tooling API directly through the 'compile' configuration)

still works as before. The runtime variant is selected.

This commit also adds integration test coverage:

This includes the typical scenarios - compileClasspath and

runtimeClasspath - and also the case where you just create

a configuration without attributes - similar to resolving

the legacy 'default' or 'compile' configurations.

  1. … 1 more file in changeset.
Replace `baseVersion` and `isSnapshot` extra properties by `BuildVersion` project extension

  1. … 9 more files in changeset.
Make sure we select a documentation variant for shaded sources Jar

Follow up to: #11743

Make attribute definitions more precise

There were two places in the build where attributes were added

to all configurations. This can have unexpected side effects, for

example in publishing where we would then publish a (custom) attribute.

With this commit, things are now expressed more precisely.

  1. … 5 more files in changeset.
Use maven-publish for publishing the Tooling API

This moves all custom configuration code for the shaded binary and

sources JARs into the 'ShadedJarPlugin' and the configuration of

publication into the 'publish-public-libraries' plugin.

The tooling-api project is currently the only project using these

two plugins.

  1. … 14 more files in changeset.
Remove unused class