From a33f0f928b24da474b0ba8258a5c47df6da8df86 Mon Sep 17 00:00:00 2001 From: Frank Vennemeyer Date: Wed, 29 Dec 2021 19:06:05 +0100 Subject: [PATCH 1/5] Automate _ext project version bumps - Fix _ext project build problems introduced with JUnit5 - Store dependency locks for releases - Provide helper task to create lib-extra lock files - Provide documentation --- .circleci/config.yml | 8 +-- _ext/eclipse-cdt/README.md | 27 +++++++- _ext/eclipse-cdt/build.gradle | 3 +- _ext/eclipse-cdt/gradle.lockfile | 25 +++++++ _ext/eclipse-cdt/gradle.properties | 1 + _ext/eclipse-groovy/README.md | 27 +++++++- _ext/eclipse-groovy/build.gradle | 3 +- _ext/eclipse-groovy/gradle.lockfile | 23 +++++++ _ext/eclipse-groovy/gradle.properties | 1 - _ext/eclipse-jdt/README.md | 19 +++++- _ext/eclipse-jdt/build.gradle | 10 +-- _ext/eclipse-jdt/gradle.lockfile | 22 +++++++ _ext/eclipse-jdt/gradle.properties | 1 + _ext/eclipse-wtp/README.md | 28 +++++++- _ext/eclipse-wtp/build.gradle | 7 +- _ext/eclipse-wtp/gradle.lockfile | 29 +++++++++ _ext/eclipse-wtp/gradle.properties | 4 +- _ext/gradle/update-lockfile.gradle | 94 +++++++++++++++++++++++++-- 18 files changed, 305 insertions(+), 27 deletions(-) create mode 100644 _ext/eclipse-cdt/gradle.lockfile create mode 100644 _ext/eclipse-groovy/gradle.lockfile create mode 100644 _ext/eclipse-jdt/gradle.lockfile create mode 100644 _ext/eclipse-wtp/gradle.lockfile diff --git a/.circleci/config.yml b/.circleci/config.yml index 48ba552c3e..acfcce1298 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -231,7 +231,7 @@ jobs: - *set_git_origin_to_https - run: name: gradlew :eclipse-jdt:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.nop2=true :eclipse-jdt:changelogPush -Prelease=true --stacktrace + command: ./gradlew -Pcom.diffplug.spotless.include.ext.nop2=true :eclipse-jdt:changelogPush -Prelease=true --stacktrace --write-locks ext_do_release_cdt: << : *env_gradle steps: @@ -241,7 +241,7 @@ jobs: - *set_git_origin_to_https - run: name: gradlew :eclipse-cdt:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.cdt=true :eclipse-cdt:changelogPush -Prelease=true --stacktrace + command: ./gradlew -Pcom.diffplug.spotless.include.ext.cdt=true :eclipse-cdt:changelogPush -Prelease=true --stacktrace --write-locks ext_do_release_groovy: << : *env_gradle steps: @@ -251,7 +251,7 @@ jobs: - *set_git_origin_to_https - run: name: gradlew :eclipse-groovy:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.groovy=true :eclipse-groovy:changelogPush -Prelease=true --stacktrace + command: ./gradlew -Pcom.diffplug.spotless.include.ext.groovy=true :eclipse-groovy:changelogPush -Prelease=true --stacktrace --write-locks ext_do_release_wtp: << : *env_gradle steps: @@ -261,7 +261,7 @@ jobs: - *set_git_origin_to_https - run: name: gradlew :eclipse-wtp:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.wtp=true :eclipse-wtp:changelogPush -Prelease=true --stacktrace + command: ./gradlew -Pcom.diffplug.spotless.include.ext.wtp=true :eclipse-wtp:changelogPush -Prelease=true --stacktrace --write-locks workflows: version: 2 diff --git a/_ext/eclipse-cdt/README.md b/_ext/eclipse-cdt/README.md index 842fbad606..2579b246e6 100644 --- a/_ext/eclipse-cdt/README.md +++ b/_ext/eclipse-cdt/README.md @@ -2,9 +2,32 @@ Eclipse CDT is not available in a form which can be easily consumed by maven or gradle. To fix this, we publish Eclipse's formatter and all its dependencies, along with a small amount of glue code, into the `com.diffplug.gradle.spotless:spotless-eclipse-cdt` artifact. -To publish a new version, update the `_ext/eclipse-cdt/gradle.properties` appropriately and see [CONTRIBUTING.md](../../CONTRIBUTING.md) how to enable -`_ext` projects. +## Build + +The `_ext` projects are disabled per default. [CONTRIBUTING.md](../../CONTRIBUTING.md) +describes how to enable them. ## License Spotless at large is under the Apache 2.0 license, but this jar is under the EPL v1. + +## Bump version + +Most Eclipse updates do not require code or test modifications. But be aware that this project +needs to access internal methods of the CDT plugin. Hence, the build step may fail +after upgrading the Eclipse version. + +1. Update the version information in [projects properties](gradle.properties), e.g. + * `VER_ECLIPSE`: Eclipse version (see [Eclipse project](https://projects.eclipse.org/projects/eclipse/governance)) + * `VER_ECLIPSE_CDT`: CDT version (see [CDT downloads](https://www.eclipse.org/cdt/downloads.php)) + +2. Update the [change log](CHANGES.md). + +3. This project creates a M2 artifact, containing classes from Eclipse P2 artifacts. Hence a new project version is published for each new Eclipse version. Build and publish the new version via [Circle CI](https://app.circleci.com/pipelines/github/diffplug spotless). + +Once the new version is [available on maven central](https://search.maven.org/artifact/com.diffplug.spotless/spotless-eclipse-cdt), prepare the integration of the new version +into the next Spotless release. + +1. Execute `gradlew :eclipse-cdt:generateLibExtraLockFile`. +2. Update the default version in the `EclipseCdtFormatterStep` class of `lib-extra`. +3. Check your changes by running `gradlew :lib-extra:build`. diff --git a/_ext/eclipse-cdt/build.gradle b/_ext/eclipse-cdt/build.gradle index 17819f4a2e..97d5687a80 100644 --- a/_ext/eclipse-cdt/build.gradle +++ b/_ext/eclipse-cdt/build.gradle @@ -9,6 +9,7 @@ ext { 'org.eclipse.cdt.core':'+', // CodeFormatter and related ] + stepLockFileComment = "Spotless formatter based on CDT version ${VER_ECLIPSE_CDT} (see https://www.eclipse.org/cdt/)" } apply from: rootProject.file('_ext/gradle/update-lockfile.gradle') @@ -36,5 +37,5 @@ dependencies { ////////// sourceSets { // Use JAR file with all resources for Eclipse-CDT integration-tests - test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath + test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath + sourceSets.test.runtimeClasspath } diff --git a/_ext/eclipse-cdt/gradle.lockfile b/_ext/eclipse-cdt/gradle.lockfile new file mode 100644 index 0000000000..272aa3fb64 --- /dev/null +++ b/_ext/eclipse-cdt/gradle.lockfile @@ -0,0 +1,25 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.5.0=compileClasspath +com.google.code.findbugs:jsr305:3.0.2=compileClasspath +com.ibm.icu:icu4j:67.1=compileClasspath +net.jcip:jcip-annotations:1.0=compileClasspath +org.eclipse.platform:org.eclipse.core.commands:3.10.100=compileClasspath +org.eclipse.platform:org.eclipse.core.contenttype:3.8.100=compileClasspath +org.eclipse.platform:org.eclipse.core.filebuffers:3.7.100=compileClasspath +org.eclipse.platform:org.eclipse.core.filesystem:1.9.200=compileClasspath +org.eclipse.platform:org.eclipse.core.jobs:3.12.0=compileClasspath +org.eclipse.platform:org.eclipse.core.resources:3.16.0=compileClasspath +org.eclipse.platform:org.eclipse.core.runtime:3.24.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.app:1.6.100=compileClasspath +org.eclipse.platform:org.eclipse.equinox.common:3.15.100=compileClasspath +org.eclipse.platform:org.eclipse.equinox.preferences:3.9.100=compileClasspath +org.eclipse.platform:org.eclipse.equinox.registry:3.11.100=compileClasspath +org.eclipse.platform:org.eclipse.jface.text:3.19.0=compileClasspath +org.eclipse.platform:org.eclipse.jface:3.24.0=compileClasspath +org.eclipse.platform:org.eclipse.osgi:3.17.100=compileClasspath +org.eclipse.platform:org.eclipse.text:3.12.0=compileClasspath +org.slf4j:slf4j-api:1.8.0-beta4=compileClasspath +empty= diff --git a/_ext/eclipse-cdt/gradle.properties b/_ext/eclipse-cdt/gradle.properties index 9c1c8a7ee6..710ec6c955 100644 --- a/_ext/eclipse-cdt/gradle.properties +++ b/_ext/eclipse-cdt/gradle.properties @@ -5,6 +5,7 @@ description=Eclipse's CDT C/C++ formatter bundled for Spotless VER_JAVA=11 # Compile dependencies +VER_ECLIPSE=4.22 VER_ECLIPSE_CDT=10.5 VER_SPOTLESS_ECLISPE_BASE=[3.5.0,4.0.0[ VER_ECLISPE_JFACE=[3.18.0,4.0.0[ diff --git a/_ext/eclipse-groovy/README.md b/_ext/eclipse-groovy/README.md index c565d04cf2..4c0a8251c4 100644 --- a/_ext/eclipse-groovy/README.md +++ b/_ext/eclipse-groovy/README.md @@ -5,9 +5,32 @@ To fix this, we publish Groovy-Eclipse's formatter and all its dependencies, alo ## Build -To publish a new version, update the `_ext/eclipse-groovy/gradle.properties` appropriately and and see [CONTRIBUTING.md](../../CONTRIBUTING.md) how to enable -`_ext` projects. +The `_ext` projects are disabled per default. [CONTRIBUTING.md](../../CONTRIBUTING.md) +describes how to enable them. ## License Spotless at large is under the Apache 2.0 license, but this jar is under the EPL v1. + +## Bump version + +Most Eclipse updates do not require code or test modifications. But be aware that this project +needs to access internal methods of the Groovy-Eclipse plugin. Hence, the build step may fail +after upgrading the Eclipse version. + +1. Update the version information in [projects properties](gradle.properties), e.g. + * `VER_ECLIPSE`: Eclipse version (see [Eclipse project](https://projects.eclipse.org/projects/eclipse/governance)) + * `VER_GRECLIPSE`: Groovy-Eclipse version (see [Groovy-Eclipse project](https://github.com/groovy/groovy-eclipse/wiki#news)) + * `VER_GROOVY`: The groovy JAR is part of the org.codehaus.groovy JAR. Either download the P2 repository from `dist.springsource.org`, or have a look at the [Groovy-Eclipse about page](https://github.com/groovy/groovy-eclipse/blob/master/base/org.codehaus.groovy40/about.html), which also lists the current version in the *Third Party Content* section. + * `VAR_GRECLIPSE_JDT_PATCH`: The P2 repository contains two JDT JARs, one original and a patched one for groovy. Both are only distinguished by their version. Assure that you use the patched version, which contains the Groovy-Eclipse extended version string (timestamp, year, ...). Either download the P2 repository from `dist.springsource.org`, or have a look at the [Groovy-Eclipse release notes](https://github.com/groovy/groovy-eclipse/wiki#news), which lists the Groovy-Eclipse extended version string for the org.codehaus.groovy update sites at the bottom of the page. + +2. Update the [change log](CHANGES.md). + +3. This project creates a M2 artifact, containing classes from Eclipse P2 artifacts. Hence a new project version is published for each new Eclipse version. Build and publish the new version via [Circle CI](https://app.circleci.com/pipelines/github/diffplug spotless). + +Once the new version is [available on maven central](https://search.maven.org/artifact/com.diffplug.spotless/spotless-eclipse-groovy), prepare the integration of the new version +into the next Spotless release. + +1. Execute `gradlew :eclipse-groovy:generateLibExtraLockFile`. +2. Update the default version in the `GrEclipseFormatterStep` class of `lib-extra`. +3. Check your changes by running `gradlew :lib-extra:build`. diff --git a/_ext/eclipse-groovy/build.gradle b/_ext/eclipse-groovy/build.gradle index e1382acd76..b59b58e2c9 100644 --- a/_ext/eclipse-groovy/build.gradle +++ b/_ext/eclipse-groovy/build.gradle @@ -32,6 +32,7 @@ ext { '**/nlcl' ] + stepLockFileComment = "Spotless formatter based on Groovy-Eclipse version ${VER_GRECLIPSE} (see https://github.com/groovy/groovy-eclipse/releases)" } apply from: rootProject.file('_ext/gradle/update-lockfile.gradle') @@ -52,5 +53,5 @@ dependencies { ////////// sourceSets { // Use JAR file with all resources for Eclipse-Groovy integration-tests - test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath + test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath + sourceSets.test.runtimeClasspath } diff --git a/_ext/eclipse-groovy/gradle.lockfile b/_ext/eclipse-groovy/gradle.lockfile new file mode 100644 index 0000000000..beb7bd3c74 --- /dev/null +++ b/_ext/eclipse-groovy/gradle.lockfile @@ -0,0 +1,23 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.0.2=compileClasspath +com.google.code.findbugs:jsr305:3.0.2=compileClasspath +net.jcip:jcip-annotations:1.0=compileClasspath +org.eclipse.platform:org.eclipse.core.commands:3.10.100=compileClasspath +org.eclipse.platform:org.eclipse.core.contenttype:3.8.0=compileClasspath +org.eclipse.platform:org.eclipse.core.filesystem:1.9.100=compileClasspath +org.eclipse.platform:org.eclipse.core.jobs:3.12.0=compileClasspath +org.eclipse.platform:org.eclipse.core.resources:3.15.100=compileClasspath +org.eclipse.platform:org.eclipse.core.runtime:3.23.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.app:1.6.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.common:3.15.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.preferences:3.9.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.registry:3.11.0=compileClasspath +org.eclipse.platform:org.eclipse.jface.text:3.18.100=compileClasspath +org.eclipse.platform:org.eclipse.jface:3.23.0=compileClasspath +org.eclipse.platform:org.eclipse.osgi:3.17.0=compileClasspath +org.eclipse.platform:org.eclipse.text:3.12.0=compileClasspath +org.slf4j:slf4j-api:1.8.0-beta4=compileClasspath +empty= diff --git a/_ext/eclipse-groovy/gradle.properties b/_ext/eclipse-groovy/gradle.properties index b8a21001fd..cf677fa3e1 100644 --- a/_ext/eclipse-groovy/gradle.properties +++ b/_ext/eclipse-groovy/gradle.properties @@ -10,5 +10,4 @@ VER_SPOTLESS_ECLISPE_BASE=[3.4.2,4.0.0[ VER_ECLISPE_JFACE=[3.15.300,4.0.0[ VER_GRECLIPSE=4.3.0 VER_GROOVY=4.0.0 -# Use org.eclipse.jdt.core patched for Groovy-Eclipse VAR_GRECLIPSE_JDT_PATCH=3.27.0.v202109301420-e2109-RELEASE diff --git a/_ext/eclipse-jdt/README.md b/_ext/eclipse-jdt/README.md index 014b58e732..9574934f79 100644 --- a/_ext/eclipse-jdt/README.md +++ b/_ext/eclipse-jdt/README.md @@ -4,9 +4,24 @@ Eclipse JDT and its dependencies require a large amount of byte code. Hence they should not be directly be required by the Spotless, but only be requested in case they are configured by the Spotless configuration. Hence we publish Eclipse's formatter and all its dependencies, along with a small amount of glue code, into the `com.diffplug.gradle.spotless:spotless-eclipse-jdt` artifact. -To publish a new version, update the `_ext/eclipse-jdt/gradle.properties` appropriately and and see [CONTRIBUTING.md](../../CONTRIBUTING.md) how to enable -`_ext` projects. +## Build + +The `_ext` projects are disabled per default. [CONTRIBUTING.md](../../CONTRIBUTING.md) +describes how to enable them. ## License Spotless at large is under the Apache 2.0 license, but this jar is under the EPL v1. + +## Bump version + +Most Eclipse updates do not require code or test modifications. But be aware that this project +needs to access internal methods of the JDT plugin. Hence, the build step may fail +after upgrading the Eclipse version. + +1. Update the version information in [projects properties](gradle.properties), e.g. only `VER_ECLIPSE` (see [Eclipse project](https://projects.eclipse.org/projects/eclipse/governance)). +2. Build with latest Eclipse artifacts and update the dependency locks (`gradlew --write-locks :eclipse-jdt:build`). +3. Prepare the integration of the new version into the next Spotless release: + * Execute `gradlew :eclipse-jdt:generateLibExtraLockFile`. + * Update the default version in the `EclipseJdtFormatterStep` class of `lib-extra`. + * Check your changes by running `gradlew :lib-extra:build`. diff --git a/_ext/eclipse-jdt/build.gradle b/_ext/eclipse-jdt/build.gradle index b0967822a9..efa9282947 100644 --- a/_ext/eclipse-jdt/build.gradle +++ b/_ext/eclipse-jdt/build.gradle @@ -1,14 +1,16 @@ -apply from: rootProject.file('_ext/gradle/update-lockfile.gradle') -apply from: rootProject.file('_ext/gradle/java-setup.gradle') -apply from: rootProject.file('gradle/java-publish.gradle') - ext { developers = [ fvgh: [ name: 'Frank Vennemeyer', email: 'frankgh@zoho.com' ], nedtwigg: [ name: 'Ned Twigg', email: 'ned.twigg@diffplug.com' ], ] + + stepLockFileComment = "Spotless formatter based on JDT version ${VER_ECLIPSE} (see https://projects.eclipse.org/projects/eclipse.jdt)" } +apply from: rootProject.file('_ext/gradle/update-lockfile.gradle') +apply from: rootProject.file('_ext/gradle/java-setup.gradle') +apply from: rootProject.file('gradle/java-publish.gradle') + dependencies { implementation "com.diffplug.spotless:spotless-eclipse-base:${VER_SPOTLESS_ECLISPE_BASE}" implementation("org.eclipse.jdt:org.eclipse.jdt.core:${VER_ECLIPSE_JDT_CORE}") { diff --git a/_ext/eclipse-jdt/gradle.lockfile b/_ext/eclipse-jdt/gradle.lockfile new file mode 100644 index 0000000000..1a354decbd --- /dev/null +++ b/_ext/eclipse-jdt/gradle.lockfile @@ -0,0 +1,22 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.0.2=compileClasspath +com.google.code.findbugs:jsr305:3.0.2=compileClasspath +net.jcip:jcip-annotations:1.0=compileClasspath +org.eclipse.jdt:org.eclipse.jdt.core:3.27.0=compileClasspath +org.eclipse.platform:org.eclipse.core.commands:3.10.100=compileClasspath +org.eclipse.platform:org.eclipse.core.contenttype:3.8.0=compileClasspath +org.eclipse.platform:org.eclipse.core.filesystem:1.9.100=compileClasspath +org.eclipse.platform:org.eclipse.core.jobs:3.12.0=compileClasspath +org.eclipse.platform:org.eclipse.core.resources:3.15.100=compileClasspath +org.eclipse.platform:org.eclipse.core.runtime:3.23.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.app:1.6.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.common:3.15.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.preferences:3.9.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.registry:3.11.0=compileClasspath +org.eclipse.platform:org.eclipse.osgi:3.17.0=compileClasspath +org.eclipse.platform:org.eclipse.text:3.12.0=compileClasspath +org.slf4j:slf4j-api:1.8.0-beta4=compileClasspath +empty= diff --git a/_ext/eclipse-jdt/gradle.properties b/_ext/eclipse-jdt/gradle.properties index 82a4423140..c2b788724b 100644 --- a/_ext/eclipse-jdt/gradle.properties +++ b/_ext/eclipse-jdt/gradle.properties @@ -5,5 +5,6 @@ description=Eclipse's JDT formatter bundled for Spotless VER_JAVA=11 # Compile +VER_ECLIPSE=4.21 VER_ECLIPSE_JDT_CORE=[3.13.0,4.0.0[ VER_SPOTLESS_ECLISPE_BASE=[3.5.0,4.0.0[ diff --git a/_ext/eclipse-wtp/README.md b/_ext/eclipse-wtp/README.md index 879f299377..4c5590faeb 100644 --- a/_ext/eclipse-wtp/README.md +++ b/_ext/eclipse-wtp/README.md @@ -2,9 +2,33 @@ Eclipse WTP is not available in a form which can be easily consumed by maven or gradle. To fix this, we publish Eclipse's WTP formatters, along with a small amount of glue code, into the `com.diffplug.spotless.extra:spotless-eclipse-wtp` artifact. -To publish a new version, update the `_ext/eclipse-wtp/gradle.properties` appropriately and and see [CONTRIBUTING.md](../../CONTRIBUTING.md) how to enable -`_ext` projects. +## Build + +The `_ext` projects are disabled per default. [CONTRIBUTING.md](../../CONTRIBUTING.md) +describes how to enable them. ## License Spotless at large is under the Apache 2.0 license, but this jar is under the EPL v1. + +## Bump version + +Most Eclipse updates do not require code or test modifications. But be aware that this project +needs to access internal methods of the WTP plugin. Hence, the build step may fail +after upgrading the Eclipse version. + +1. Update the version information in [projects properties](gradle.properties), e.g. + * `VER_ECLIPSE`: Eclipse version (see [Eclipse project](https://projects.eclipse.org/projects/eclipse/governance)) + * `VER_ECLIPSE_WTP`: WTP version (see [WTP project](https://www.eclipse.org/webtools/)) + * `VER_ECLIPSE_WTP_REPO`: The PR repository name which is equal to the Eclipse year-month version (see [WTP repository overview](https://download.eclipse.org/webtools/repository/)). + +2. Update the [change log](CHANGES.md). + +3. This project creates a M2 artifact, containing classes from Eclipse P2 artifacts. Hence a new project version is published for each new Eclipse version. Build and publish the new version via [Circle CI](https://app.circleci.com/pipelines/github/diffplug spotless). + +Once the new version is [available on maven central](https://search.maven.org/artifact/com.diffplug.spotless/spotless-eclipse-groovy), prepare the integration of the new version +into the next Spotless release. + +1. Execute `gradlew :eclipse-wtp:generateLibExtraLockFile`. +2. Update the default version in the `EclipseWtpFormatterStep` class of `lib-extra`. +3. Check your changes by running `gradlew :lib-extra:build`. diff --git a/_ext/eclipse-wtp/build.gradle b/_ext/eclipse-wtp/build.gradle index 4001e100c2..de1e1c2dab 100644 --- a/_ext/eclipse-wtp/build.gradle +++ b/_ext/eclipse-wtp/build.gradle @@ -3,7 +3,7 @@ ext { fvgh: [ name: 'Frank Vennemeyer', email: 'frankgh@zoho.com' ], ] - p2Repository = "https://download.eclipse.org/webtools/repository/${VER_ECLIPSE_WTP}" + p2Repository = "https://download.eclipse.org/webtools/repository/${VER_ECLIPSE_WTP_REPO}" p2Dependencies = [ // XML/HTML Formatter - Dependencies @@ -53,6 +53,8 @@ ext { 'org.eclipse.wst.xml.core': 'org.eclipse.wst.xml.core.internal', 'org.eclipse.wst.xsd.core': 'org.eclipse.wst.xsd.core.internal' ] + + stepLockFileComment = "Spotless formatter based on Eclipse-WTP version ${VER_ECLIPSE_WTP} (see https://www.eclipse.org/webtools/)" } apply from: rootProject.file('_ext/gradle/update-lockfile.gradle') @@ -93,7 +95,7 @@ jar { ////////// sourceSets { // Use JAR file with all resources for Eclipse-WTP integration-tests - test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath + test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath + sourceSets.test.runtimeClasspath } /* @@ -115,6 +117,7 @@ fileTree(dir: testLocation).include('**/*Test.java').each { file -> group = LifecycleBasePlugin.VERIFICATION_GROUP description = "Runs ${testFile} integration test." include "${filePath}" + useJUnitPlatform() reports { html.destination = new File("$buildDir/reports/${testFile}") junitXml.destination = new File("$buildDir/${testFile}") diff --git a/_ext/eclipse-wtp/gradle.lockfile b/_ext/eclipse-wtp/gradle.lockfile new file mode 100644 index 0000000000..43fa72ae94 --- /dev/null +++ b/_ext/eclipse-wtp/gradle.lockfile @@ -0,0 +1,29 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.0.2=compileClasspath +com.google.code.findbugs:jsr305:3.0.2=compileClasspath +com.ibm.icu:icu4j:67.1=compileClasspath +net.jcip:jcip-annotations:1.0=compileClasspath +org.eclipse.emf:org.eclipse.emf.common:2.23.0=compileClasspath +org.eclipse.emf:org.eclipse.emf.ecore:2.25.0=compileClasspath +org.eclipse.emf:org.eclipse.xsd:2.18.0=compileClasspath +org.eclipse.platform:org.eclipse.core.commands:3.10.100=compileClasspath +org.eclipse.platform:org.eclipse.core.contenttype:3.8.0=compileClasspath +org.eclipse.platform:org.eclipse.core.filebuffers:3.7.0=compileClasspath +org.eclipse.platform:org.eclipse.core.filesystem:1.9.100=compileClasspath +org.eclipse.platform:org.eclipse.core.jobs:3.12.0=compileClasspath +org.eclipse.platform:org.eclipse.core.resources:3.15.100=compileClasspath +org.eclipse.platform:org.eclipse.core.runtime:3.23.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.app:1.6.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.common:3.15.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.preferences:3.9.0=compileClasspath +org.eclipse.platform:org.eclipse.equinox.registry:3.11.0=compileClasspath +org.eclipse.platform:org.eclipse.jface.text:3.18.100=compileClasspath +org.eclipse.platform:org.eclipse.jface:3.23.0=compileClasspath +org.eclipse.platform:org.eclipse.osgi.services:3.10.200=compileClasspath +org.eclipse.platform:org.eclipse.osgi:3.17.0=compileClasspath +org.eclipse.platform:org.eclipse.text:3.12.0=compileClasspath +org.slf4j:slf4j-api:1.8.0-beta4=compileClasspath +empty= diff --git a/_ext/eclipse-wtp/gradle.properties b/_ext/eclipse-wtp/gradle.properties index 743748d1ba..6680292ea3 100644 --- a/_ext/eclipse-wtp/gradle.properties +++ b/_ext/eclipse-wtp/gradle.properties @@ -5,7 +5,9 @@ description=Eclipse's WTP formatters bundled for Spotless VER_JAVA=11 # Compile -VER_ECLIPSE_WTP=2021-09 +VER_ECLIPSE=4.21 +VER_ECLIPSE_WTP=3.23 +VER_ECLIPSE_WTP_REPO=2021-09 VER_SPOTLESS_ECLISPE_BASE=[3.5.0,4.0.0[ VER_IBM_ICU=[67.1,68[ VER_ECLISPE_EMF=[2.22.0,3.0.0[ diff --git a/_ext/gradle/update-lockfile.gradle b/_ext/gradle/update-lockfile.gradle index 098d960eff..a82d635408 100644 --- a/_ext/gradle/update-lockfile.gradle +++ b/_ext/gradle/update-lockfile.gradle @@ -1,6 +1,90 @@ -// Use file locking -configurations.all { - resolutionStrategy { - activateDependencyLocking() +ext { + // Eclipse version (numerical format, up to 3 dot separated digits) + if (!project.hasProperty('VER_ECLIPSE')) { + vEclipse = "VER_ECLIPSE property not defined for project" } -} \ No newline at end of file + else { + if(3 > VER_ECLIPSE.count('.')) { + vEclipse = VER_ECLIPSE + ".0".repeat(2-VER_ECLIPSE.count('.')) + } + else { + vEclipse = VER_ECLIPSE + } + } + + dependencyLockFile = project.file("gradle.lockfile") + changesFile = project.file("CHANGES.md") + + // Formatter step dependency lock file + def projectResourceDirName = project.name.replace('-', '_') + "_formatter" + stepLockFile = project(':lib-extra').file("src/main/resources/com/diffplug/spotless/extra/${projectResourceDirName}/v${vEclipse}.lockfile") + if (!project.hasProperty('stepLockFileComment')) { + stepLockFileComment = "File generated by 'prepareLibExtraLockFile' task." + } +} + + +// Lock implementation dependencies +configurations { + compileClasspath { + resolutionStrategy.activateDependencyLocking() + } +} +dependencyLocking { + //Lock file can be used manually as input for :lib-extra lockfiles + lockFile = dependencyLockFile +} + +// Add/Push dependency lock file together with change-log +if (gradle.startParameter.writeDependencyLocks) { + def changelogBumpLockfileGitAdd = tasks.register('changelogBumpLockfileGitAdd') { + /* changelogBump is executed after compile/check. + The write of new lock file should be accomplished during configuration. */ + dependsOn(tasks.named('changelogBump')) + // do the git add + doLast { + exec { commandLine 'git', 'add' , dependencyLockFile.getAbsolutePath() } + } + } + afterEvaluate { + tasks.named('changelogPush').configure { + dependsOn changelogBumpLockfileGitAdd + } + } +} + +// Prepare dependency lock file for lib-extra +import java.util.stream.Collectors + +task generateLibExtraLockFile { + description = "Generates lib-extra project dependency lock file based on the project 'gradle.lockfile'." + group = "Publishing" + inputs.files(dependencyLockFile) + inputs.files(changesFile) + inputs.property('vEclipse', vEclipse) + inputs.property('stepLockFileComment', stepLockFileComment) + outputs.files(stepLockFile) + + doLast { + def dependencyLockEntries = dependencyLockFile.text.readLines() + //Filter slf4j-api, since Maven and Gradle provide API and implementation with a matching version. + dependencyLockEntries = dependencyLockEntries + .stream() + .filter( e -> e.contains("=") && e.contains("compileClasspath") && !e.contains("slf4j-api") ) + .map(e -> e.split("=")[0]) + .collect(Collectors.toList()) + def latestRelease = changesFile.getText('UTF-8') + .readLines() + .stream() + .filter( e -> e.contains('## [') && e.contains('] - ') ) + .map(e -> e.split('[\\[\\]]')[1]) + .findFirst().orElse('Unable to deterine latest version from change log') + + dependencyLockEntries.add(0, "com.diffplug.spotless:spotless-${project.name}:${latestRelease}") + + stepLockFile.write("# ${stepLockFileComment}\n") + dependencyLockEntries.each({ + stepLockFile << "${it}\n" + }) + } +} From ed3c95ce431c789b279500f30bef4bd1c5823a0a Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 7 Jan 2022 13:57:54 -0800 Subject: [PATCH 2/5] Simplify _ext publishing using if-git-diff. - com.diffplug.spotless.include.ext.nop2 is gone - com.diffplug.spotless.include.ext=ifgitdiff means configure ext projects which changed since origin/ifgitdiff - changelogPrint, changelogPush, and test all have `ext_` prefixed tasks for just the ext projects --- .circleci/config.yml | 112 +++++----------------------- CONTRIBUTING.md | 2 + _ext/gradle/p2-fat-jar-setup.gradle | 38 +++++----- gradle/changelog.gradle | 12 ++- settings.gradle | 40 ++++------ 5 files changed, 64 insertions(+), 140 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index acfcce1298..2b64470f69 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -202,6 +202,16 @@ jobs: - run: name: gradlew :plugin-maven:changelogPush command: ./gradlew :plugin-maven:changelogPush -Prelease=true --stacktrace + test_ext: + << : *env_gradle + steps: + - checkout + - *restore_cache_wrapper + - *restore_cache_deps + - *set_git_origin_to_https + - run: + name: gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_test + command: ./gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_test ext_changelog_print: << : *env_gradle steps: @@ -210,9 +220,9 @@ jobs: - *restore_cache_deps - *set_git_origin_to_https - run: - name: gradlew -Pcom.diffplug.spotless.include.ext.nop2=true changelogPrint - command: ./gradlew -Pcom.diffplug.spotless.include.ext.nop2=true changelogPrint - ext_do_release_base: + name: gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_changelogPrint + command: ./gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_changelogPrint + ext_do_release: << : *env_gradle steps: - checkout @@ -220,54 +230,15 @@ jobs: - *restore_cache_deps - *set_git_origin_to_https - run: - name: gradlew :eclipse-base:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.nop2=true :eclipse-base:changelogPush -Prelease=true --stacktrace - ext_do_release_jdt: - << : *env_gradle - steps: - - checkout - - *restore_cache_wrapper - - *restore_cache_deps - - *set_git_origin_to_https - - run: - name: gradlew :eclipse-jdt:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.nop2=true :eclipse-jdt:changelogPush -Prelease=true --stacktrace --write-locks - ext_do_release_cdt: - << : *env_gradle - steps: - - checkout - - *restore_cache_wrapper - - *restore_cache_deps - - *set_git_origin_to_https - - run: - name: gradlew :eclipse-cdt:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.cdt=true :eclipse-cdt:changelogPush -Prelease=true --stacktrace --write-locks - ext_do_release_groovy: - << : *env_gradle - steps: - - checkout - - *restore_cache_wrapper - - *restore_cache_deps - - *set_git_origin_to_https - - run: - name: gradlew :eclipse-groovy:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.groovy=true :eclipse-groovy:changelogPush -Prelease=true --stacktrace --write-locks - ext_do_release_wtp: - << : *env_gradle - steps: - - checkout - - *restore_cache_wrapper - - *restore_cache_deps - - *set_git_origin_to_https - - run: - name: gradlew :eclipse-wtp:changelogPush - command: ./gradlew -Pcom.diffplug.spotless.include.ext.wtp=true :eclipse-wtp:changelogPush -Prelease=true --stacktrace --write-locks + name: gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_changelogPush -Prelease=true + command: ./gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_changelogPush -Prelease=true --stacktrace workflows: version: 2 assemble_and_test: jobs: - test_windows + - test_ext - assemble_testClasses - test_justmaven_11: requires: @@ -329,57 +300,12 @@ workflows: filters: branches: only: main - - ext_release_base: + - ext_release: type: approval requires: - ext_changelog_print - - ext_do_release_base: - requires: - - ext_release_base - context: - - SonatypeDeploy - - ext_release_jdt: - type: approval - requires: - - ext_changelog_print - - ext_do_release_jdt: - requires: - - ext_release_jdt - context: - - SonatypeDeploy - - ext_release_cdt: - type: approval - requires: - - ext_changelog_print - - ext_do_release_cdt: - filters: - branches: - only: main - requires: - - ext_release_cdt - context: - - SonatypeDeploy - - ext_release_groovy: - type: approval - requires: - - ext_changelog_print - - ext_do_release_groovy: - filters: - branches: - only: main - requires: - - ext_release_groovy - context: - - SonatypeDeploy - - ext_release_wtp: - type: approval - requires: - - ext_changelog_print - - ext_do_release_wtp: - filters: - branches: - only: main + - ext_do_release: requires: - - ext_release_wtp + - ext_release context: - SonatypeDeploy diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 94bef92f01..fbc01d9270 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -130,6 +130,8 @@ gradlew -Pcom.diffplug.spotless.include.ext=true build Or set the property in your user `gradle.properties` file, which is especially recommended if you like to work with the `_ext` projects using IDEs. +You can also do `gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff` in which case each `_ext` project which has changes in the worktree relative to `origin/main` will be configured. + ## How to add a new plugin for a build system The gist of it is that you will have to: diff --git a/_ext/gradle/p2-fat-jar-setup.gradle b/_ext/gradle/p2-fat-jar-setup.gradle index a8f4e242af..ffc2716877 100644 --- a/_ext/gradle/p2-fat-jar-setup.gradle +++ b/_ext/gradle/p2-fat-jar-setup.gradle @@ -12,7 +12,7 @@ ext { p2Dependencies = "p2Dependencies not defined in project" } - // Some JARs may include JARs themselfs, which shall be unpacked and added to the embedded class folder. + // Some JARs may include JARs themselfs, which shall be unpacked and added to the embedded class folder. if (!project.hasProperty('internalJars')) { internalJars = [] } @@ -35,34 +35,32 @@ ext { 'META-INF/*.SF', // ... so all signatures are filtered ] } - + // Map fat-JAR resources path if JAR file name does not correspond to plugin package name (e.g. required for internal plugins) if (!project.hasProperty('fatJarResourcesMap')) { fatJarResourcesMap = [:] } - - + + // The directory contains all external classes for the fat-jar embeddedClassesDirName = 'build/embeddedClasses' embeddedClassesDir = project.file(embeddedClassesDirName) } -if (gradle.startParameter.projectProperties.get('com.diffplug.spotless.include.ext.nop2') != 'true') { - // build a maven repo in our build folder containing these artifacts - p2AsMaven { - group 'p2', { - repo project.p2Repository - p2Dependencies.keySet.each { p2.addIU(it) } - p2ant { - /* - Define p2ant proxy settings as a closure. Refer to the API documents for instructions: - https://diffplug.github.io/goomph/javadoc/3.17.4/com/diffplug/gradle/p2/AsMavenPlugin.html - */ - if (project.hasProperty('setP2AntProxy')) { - setP2AntProxy(it) - } - } - } +// build a maven repo in our build folder containing these artifacts +p2AsMaven { + group 'p2', { + repo project.p2Repository + p2Dependencies.keySet.each { p2.addIU(it) } + p2ant { + /* + Define p2ant proxy settings as a closure. Refer to the API documents for instructions: + https://diffplug.github.io/goomph/javadoc/3.17.4/com/diffplug/gradle/p2/AsMavenPlugin.html + */ + if (project.hasProperty('setP2AntProxy')) { + setP2AntProxy(it) + } + } } } diff --git a/gradle/changelog.gradle b/gradle/changelog.gradle index 316e98a2d7..f9bf57a144 100644 --- a/gradle/changelog.gradle +++ b/gradle/changelog.gradle @@ -21,9 +21,15 @@ spotlessChangelog { commitMessage "Published ${kind}/{{version}}" // {{version}} will be replaced } -if (gradle.startParameter.projectProperties.get('com.diffplug.spotless.include.ext.nop2') == 'true') { - tasks.named('changelogPrint') { - enabled = kind.startsWith('ext-') +if (kind.startsWith('ext-')) { + [ + 'changelogPrint', + 'changelogPush', + 'test' + ].each { + tasks.register("ext_$it") { + dependsOn it + } } } diff --git a/settings.gradle b/settings.gradle index ae5bbbecbd..8d7e65d6e0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ pluginManagement { // https://github.com/spotbugs/spotbugs-gradle-plugin/releases id 'com.github.spotbugs' version '5.0.3' // https://github.com/diffplug/spotless-changelog - id 'com.diffplug.spotless-changelog' version '2.3.2' + id 'com.diffplug.spotless-changelog' version '2.4.0' // https://github.com/diffplug/goomph/blob/main/CHANGES.md id 'com.diffplug.p2.asmaven' version '3.27.0' // DO NOT UPDATE, see https://github.com/diffplug/spotless/pull/874 // https://github.com/gradle/test-retry-gradle-plugin/releases @@ -83,29 +83,21 @@ if (System.getenv('SPOTLESS_EXCLUDE_MAVEN') != 'true' && getStartProperty('SPOTL } // include external (_ext) projects from development builds -if (getStartProperty('com.diffplug.spotless.include.ext') == 'true') { +String includeExt = getStartProperty('com.diffplug.spotless.include.ext') +if (includeExt == 'true' || includeExt == 'ifgitdiff') { file('_ext').eachDirMatch(~/^(?!(\.|gradle)).*/) { dir -> - include dir.name - project(":${dir.name}").projectDir = dir - } -} - -// include external (_ext) projects from development builds, but disable the p2 parts -if (getStartProperty('com.diffplug.spotless.include.ext.nop2') == 'true') { - file('_ext').eachDirMatch(~/^(?!(\.|gradle)).*/) { dir -> - include dir.name - project(":${dir.name}").projectDir = dir - } -} - -// the p2-based projects are too expensive for routine CI builds, so they have to be invoked explicitly -for (kind in [ - 'cdt', - 'groovy', - 'wtp' - ]) { - if (getStartProperty("com.diffplug.spotless.include.ext.${kind}") == 'true') { - include "eclipse-${kind}" - project(":eclipse-${kind}").projectDir = file("_ext/eclipse-${kind}") + if (includeExt == 'ifgitdiff') { + apply plugin: 'com.diffplug.if-git-diff' + ifGitDiff { + baseline 'origin/ifgitdiff' + inFolder(dir) { + include dir.name + project(":${dir.name}").projectDir = dir + } + } + } else { + include dir.name + project(":${dir.name}").projectDir = dir + } } } From ad62a71d952cce6f4a67aacfa07b928a9560fcb1 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 7 Jan 2022 14:12:54 -0800 Subject: [PATCH 3/5] Fix the `ext_*` tasks. --- gradle/changelog.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/changelog.gradle b/gradle/changelog.gradle index f9bf57a144..5effef82bb 100644 --- a/gradle/changelog.gradle +++ b/gradle/changelog.gradle @@ -26,9 +26,9 @@ if (kind.startsWith('ext-')) { 'changelogPrint', 'changelogPush', 'test' - ].each { - tasks.register("ext_$it") { - dependsOn it + ].each { taskName -> + tasks.register("ext_$taskName") { + dependsOn taskName } } } From c8529f0082847c20713c636c5534ba6dd7c211f1 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 7 Jan 2022 15:14:06 -0800 Subject: [PATCH 4/5] CI job ext_do_release will now update origin/ifgitdiff --- .circleci/config.yml | 6 +++++- gradle/changelog.gradle | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2b64470f69..89f41cbdb8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -27,7 +27,10 @@ anchors: run: name: set git origin to https command: git remote set-url --push origin https://github.com/diffplug/spotless - + checkout_ifgitdiff: &checkout_ifgitdiff + run: + name: checkout ifgitdiff here + command: git checkout -B ifgitdiff HEAD test_nomaven: &test_nomaven steps: - checkout @@ -229,6 +232,7 @@ jobs: - *restore_cache_wrapper - *restore_cache_deps - *set_git_origin_to_https + - *checkout_ifgitdiff - run: name: gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_changelogPush -Prelease=true command: ./gradlew -Pcom.diffplug.spotless.include.ext=ifgitdiff ext_changelogPush -Prelease=true --stacktrace diff --git a/gradle/changelog.gradle b/gradle/changelog.gradle index 5effef82bb..aa40771dcb 100644 --- a/gradle/changelog.gradle +++ b/gradle/changelog.gradle @@ -22,6 +22,9 @@ spotlessChangelog { } if (kind.startsWith('ext-')) { + spotlessChangelog { + branch 'ifgitdiff' + } [ 'changelogPrint', 'changelogPush', From 6a84de5cd40b57ddde6a5b99c62e32f9c15eb333 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 11 Jun 2022 16:58:53 -0700 Subject: [PATCH 5/5] Update lockfiles to the spotbugs-annotations which we are actually using. --- _ext/eclipse-groovy/gradle.lockfile | 2 +- _ext/eclipse-jdt/gradle.lockfile | 2 +- _ext/eclipse-wtp/gradle.lockfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_ext/eclipse-groovy/gradle.lockfile b/_ext/eclipse-groovy/gradle.lockfile index beb7bd3c74..044278d412 100644 --- a/_ext/eclipse-groovy/gradle.lockfile +++ b/_ext/eclipse-groovy/gradle.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath -com.github.spotbugs:spotbugs-annotations:4.0.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.5.0=compileClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath net.jcip:jcip-annotations:1.0=compileClasspath org.eclipse.platform:org.eclipse.core.commands:3.10.100=compileClasspath diff --git a/_ext/eclipse-jdt/gradle.lockfile b/_ext/eclipse-jdt/gradle.lockfile index 1a354decbd..1c0f67ef5b 100644 --- a/_ext/eclipse-jdt/gradle.lockfile +++ b/_ext/eclipse-jdt/gradle.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath -com.github.spotbugs:spotbugs-annotations:4.0.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.5.0=compileClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath net.jcip:jcip-annotations:1.0=compileClasspath org.eclipse.jdt:org.eclipse.jdt.core:3.27.0=compileClasspath diff --git a/_ext/eclipse-wtp/gradle.lockfile b/_ext/eclipse-wtp/gradle.lockfile index 43fa72ae94..057b75b837 100644 --- a/_ext/eclipse-wtp/gradle.lockfile +++ b/_ext/eclipse-wtp/gradle.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.diffplug.spotless:spotless-eclipse-base:3.5.2=compileClasspath -com.github.spotbugs:spotbugs-annotations:4.0.2=compileClasspath +com.github.spotbugs:spotbugs-annotations:4.5.0=compileClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath com.ibm.icu:icu4j:67.1=compileClasspath net.jcip:jcip-annotations:1.0=compileClasspath