Skip to content

Publish Gradle metadata #23503

Closed
Closed
@bclozel

Description

@bclozel

As of its 5.3 version, Gradle is able to generate and consume Gradle-specific build metadata. It's an opt-in feature for now, but it will be enabled by default with Gradle 6.0.

Should we produce and publish this metadata for our 5.2.0 release?

Here is the module.json file published for spring-webflux:

{
  "formatVersion": "1.0",
  "component": {
    "group": "org.springframework",
    "module": "spring-webflux",
    "version": "5.2.0.BUILD-SNAPSHOT",
    "attributes": {
      "org.gradle.status": "integration"
    }
  },
  "createdBy": {
    "gradle": {
      "version": "5.6",
      "buildId": "tnw2jjpho5a5jfyvqcxsiinl3u"
    }
  },
  "variants": [
    {
      "name": "apiElements",
      "attributes": {
        "org.gradle.category": "library",
        "org.gradle.dependency.bundling": "external",
        "org.gradle.jvm.version": 8,
        "org.gradle.libraryelements": "jar",
        "org.gradle.usage": "java-api",
        "org.jetbrains.kotlin.localToProject": "public",
        "org.jetbrains.kotlin.platform.type": "jvm"
      },
      "dependencies": [
        {
          "group": "org.springframework",
          "module": "spring-beans",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-core",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-web",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "io.projectreactor",
          "module": "reactor-core",
          "version": {
            "requires": "3.3.0.M3"
          }
        }
      ],
      "files": [
        {
          "name": "spring-webflux-5.2.0.BUILD-SNAPSHOT.jar",
          "url": "spring-webflux-5.2.0.BUILD-SNAPSHOT.jar",
          "size": 812464,
          "sha1": "2ba63ce11e96bccd35154fdc683101bd3414bc56",
          "md5": "7ed44177912810577066d4e262f8273d"
        }
      ]
    },
    {
      "name": "runtimeElements",
      "attributes": {
        "org.gradle.category": "library",
        "org.gradle.dependency.bundling": "external",
        "org.gradle.jvm.version": 8,
        "org.gradle.libraryelements": "jar",
        "org.gradle.usage": "java-runtime",
        "org.jetbrains.kotlin.localToProject": "public",
        "org.jetbrains.kotlin.platform.type": "jvm"
      },
      "dependencies": [
        {
          "group": "org.springframework",
          "module": "spring-beans",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-core",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-web",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "io.projectreactor",
          "module": "reactor-core",
          "version": {
            "requires": "3.3.0.M3"
          }
        }
      ],
      "files": [
        {
          "name": "spring-webflux-5.2.0.BUILD-SNAPSHOT.jar",
          "url": "spring-webflux-5.2.0.BUILD-SNAPSHOT.jar",
          "size": 812464,
          "sha1": "2ba63ce11e96bccd35154fdc683101bd3414bc56",
          "md5": "7ed44177912810577066d4e262f8273d"
        }
      ]
    }
  ]
}

Here is the module.json file for our Java Platform (also exported as a Maven BOM):

{
  "formatVersion": "1.0",
  "component": {
    "group": "org.springframework",
    "module": "spring-framework-bom",
    "version": "5.2.0.BUILD-SNAPSHOT",
    "attributes": {
      "org.gradle.status": "integration"
    }
  },
  "createdBy": {
    "gradle": {
      "version": "5.6",
      "buildId": "536e76sdo5cndbduo2qqzgbcja"
    }
  },
  "variants": [
    {
      "name": "apiElements",
      "attributes": {
        "org.gradle.category": "platform",
        "org.gradle.usage": "java-api"
      },
      "dependencyConstraints": [
        {
          "group": "org.springframework",
          "module": "spring-aop",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-aspects",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-beans",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-context",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-context-indexer",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-context-support",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-core",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-expression",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-instrument",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-jcl",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-jdbc",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-jms",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-messaging",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-orm",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-oxm",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-test",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-tx",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-web",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-webflux",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-webmvc",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-websocket",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        }
      ]
    },
    {
      "name": "runtimeElements",
      "attributes": {
        "org.gradle.category": "platform",
        "org.gradle.usage": "java-runtime"
      },
      "dependencyConstraints": [
        {
          "group": "org.springframework",
          "module": "spring-aop",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-aspects",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-beans",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-context",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-context-indexer",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-context-support",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-core",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-expression",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-instrument",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-jcl",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-jdbc",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-jms",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-messaging",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-orm",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-oxm",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-test",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-tx",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-web",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-webflux",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-webmvc",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        },
        {
          "group": "org.springframework",
          "module": "spring-websocket",
          "version": {
            "requires": "5.2.0.BUILD-SNAPSHOT"
          }
        }
      ]
    }
  ]
}

Note that all the generated POMs are slightly changed with the following:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <!-- This module was also published with a richer model, Gradle metadata,  -->
  <!-- which should be used instead. Do not delete the following line which  -->
  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->
  <!-- that they should prefer consuming it instead. -->
  <!-- do-not-remove: published-with-gradle-metadata -->
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework</groupId>
  <artifactId>spring-framework-bom</artifactId>

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions