DiffPlug Blowdryer scripts
- In
settings.gradle, addapply from: com.diffplug.blowdryer.Blowdryer.file('base/buildscan-on-ci.gradle')and you'll get buildscans in CI.
changelogBumpFreshmarkGitAddno longer triggers a "deprecated in Gradle 9" warning.
- Bump sonatype URLs now that the old ones are dead.
- Bumpled Kotlin to 2.2
- Added
-Xconsistent-data-class-copy-visibilitytocompileKotlinandcompileTestKotlin
- More spotless deprecation warnings.
- Fix spotless deprecation warnings.
- Fix assignment deprecation warnings in
javadoc-view.
- BREAKING updating signing subkey to match what our org-level GitHub actions actually has.
- Bump all versions to latest, especially Kotlin
2.1.0->2.1.21. - Hardcoded the
2C7F998F4272C851signing subkey for our new GPG setup. - Better default tag message for spotless-changelog.
- Bump plugin versions to latest (Kotlin 2.1.0).
- Bump plugin versions to latest.
- Tag message now has the
v{{version}}\n\n{changes}format, as workaround for cli/cli#9299.
- BREAKING
spotlessChangelognow creates GitHub releases by default (#6)- you need to update your
deploy.yml - if you set the
tagPrefix, then you'll need to update therunAfterPush - see PR above for details
- you need to update your
spotless/kotlin-dense.gradlefor tight packing
- Bump all plugin versions, in particular Kotlin to 2.0.0
- Publishing the java part of Kotlin multiplatform jars is now supported.
- Removed
com.diffplug.eclipse.aptfrombase/autovaluesince we have mostly moved to IntelliJ. - Bump all plugins to latest, especially Kotlin to
1.9.21
- Maven plugin is now friendly with Kotlin Multiplatform.
- Add
matconsolectllicense.
- Bump Kotlin plugins to latest,
1.8.20->1.8.22, and all other plugins too.
- Bump Kotlin plugins to latest,
1.8.0->1.8.20.
- Bump plugins to latest, which means build now requires Java 11.
spotlessFreshmarknow runs on Java 17.
plugin.versionsandplugin-kotlin.versionsto take advantage of the new Blowdryer version syncing.spotlessChangelog { appendDashSnapshotUnless_dashPrelease = truebecause it's safer.
- BREAKING renamed
java8.gradletojava.gradlewhich requiresver_javaproperty. spotlessChangelog { branch 'release' ...because fine-grained tokens can't push to a protectedmain.
spotlessChangelog { branch 'release' ...because fine-grained tokens can't push to a protectedmain.
- Use
nexus_pass64instead ofnexus_pass.
- Gradle plugin publishing.
- BREAKING New minimum requirements
gradle:7.6andcom.gradle.plugin-publish:1.1.0, adapted to those changes. - BREAKING Remove support for
org.jdrupes.mdoclet.
base/kotlinnow specifiesfreeCompilerArgs = ["-Xjvm-default=all"]so that Kotlin interface method implementations can be used from Java.
base/kotlin.gradle
- Make the eclipse plugin optional for
gradle-plugin.gradle
- Update sonatype URL to
https://s01.oss.sonatype.org/since we migrated for better performance.
- Fix sonatype publishing for multi-module projects.
gpg64from sonatype is now read using干.projas intended.
- Builds that do not have Sonatype publish plugin applied now assume that they are publishing to GitLab.
- Bugfix for previous.
- Now encodes gpg key using Base64 which actually works on CircleCI.
- We were sometimes deploying gradle plugins without also deploying to maven, now fixed.
- We yanked all earlier versions of 5.0.x to force an update because this is a fairly pernicious error.
sourcesJarno longer throws warnings on Gradle 7.1- Only use
org.jdrupes.mdocleton Java 8 and below
- no more Gradle 7.0 warnings abour
generateMetadataFileForPluginMavenPublicationhaving undeclared dependencies.
- no more errors on machines where
enable_publishinghasn't been set
- BREAKING
base/autovaluenow requires aVER_AUTOVALUEparameter
- yet more sonatype fixes
- more sonatype fixes
- fix sonatype deployment
base/sonatypehas been added (because BREAKINGbase/bintrayhas been removed)
- Added
lgpl-2.1as a supported license.
- Adopt the new
spotlessplugin coordinate atcom.diffplug.spotless - Bump
VER_AUTOVALUEfrom1.7.3to1.7.4.
- We now do formatting relative to
origin/main. - Added missing
(C)in our apache copyright header. - Bump
VER_AUTOVALUEfrom1.7to1.7.3.
spotlessApply -PspotlessSetLicenseHeaderYearsFromGitHistory=truenow updates all files (as intended) rather than only the changed ones.
org.jdrupes.mdocletwas failing to resolve when used withjavadoc-agg.gradle
- We now require Spotless
4.3+, because we do formatting relative toorigin/master.- If you run
spotlessApply -PspotlessSetLicenseHeaderYearsFromGitHistory=truethen every license header will be updated appropriately
- If you run
base/autovaluefor applying Google AutoValueswt/svg-imagesrenders SVG images with SWT high-DPI support
- Added an error message to prevent accidental misuse of the
git_urlparameter
- Better short names for
license=confidential javadoc-markdown.gradlenow requires thatid 'org.jdrupes.mdoclet' version '1.0.9'(or later) is on the classpath- Migrate from
com.diffplug.gradle.xtocom.diffplug.xfor goomph
- Support
confidentialas a value forlicense.
- Inserted commented-out
干.mustRunAfter. No behavior change, but we'll try to keep these up-to-date in case diffplug/blowdryer#8 gets implemented. (a9c3489) - Every javadoc task now has
javadocViewtask, which will render and open the javadoc in a browser.- BREAKING Requires that at least one of the
goomphplugins is on the classpath.
- BREAKING Requires that at least one of the
- Every javadoc task now uses jdrupes-mdoclet.
base/changelog, which pulls version information from a changelog in either the same project or the parent project- Also hooked into
spotless/freshmark, to pass theversionNextandversionLastproperties
- Also hooked into
base/bintray, for pushing to bintray and mavenCentralbase/osgi, for OSGi metadatabase/javadoc-agg, for aggregating javadoc from subprojects into one central artifact- support for per-plugin tags in
base/gradle-plugin. spotless/freshmarknow setsversionLastproperty if there is aspotless-changelogplugin applied somewhere- BREAKING the spotless plugin must be declared in
settings.gradleorbuildSrc. That's probably a good pattern in general.
- BREAKING the spotless plugin must be declared in
- The spotless license header is now
https, and we also force the year to 2020 since we're about to release a bunch of new code in 2020.
- Set javadoc to use
UTF-8encoding. - If you apply
spotless/javato the root project, it will now fixbuildSrc/*.gradlein addition to the*.gradlewhich it already fixed.
First release.
| user | updated on | to version |
|---|---|---|
| atplug | 2023-01-28 | 7.0.0 |
| blowdryer | 2023-01-28 | 7.0.0 |
| durian-globals | 2020-06-05 | 3.2.2 |
| durian-rx | 2020-01-12 | 3.1.0 |
| durian-swt | 2021-12-16 | 5.1.3 |
| goomph | 2023-02-28 | 7.0.1 |
| freshmark | 2023-02-05 | 7.0.0 |
| jscriptbox | 2023-02-05 | 7.0.0 |
| libxdiff | 2021-02-18 | 3.3.0 |
| image-grinder | 2020-12-16 | 5.1.3 |
| spotless-changelog | 2023-01-28 | 7.0.0 |
| webtools | 2025-07-28 | 9.0.5 |
| internal projects | ||
| buildcloset | 2020-01-12 | 3.2.5 |
| website | 2021-05-28 | 5.0.2 |
- spotless/freshmark - applies to
*.gradleand*.md- if
com.diffplug.spotless-changelogis applied in this or the parent project, thenversionLastwill be set in freshmark
- if
- spotless/java - applies to
*.gradleand java sourcesets干.proj('license', 'supported: [apache, confidential, lgpl-2.1]')
- base/java - sets up java 8 with UTF-8, clean eclipse projects, and mavenCentral
干.proj('ver_java', 'target JVM bytecode (8, 11, etc)')
- base/kotlin - apply
org.jetbrains.kotlin.jvm干.projOptional('kotlin_jvmTarget', 'JVM target for the kotlin plugin')
- base/changelog - pulls version information from a changelog in either the same project or the parent project
- base/gradle-plugin - sets up gradle plugin metadata and plugin portal publishing, fixes eclipse to hook gradle
- requires
id 'com.gradle.plugin-publish' version '0.10.1' 干.proj('git_url', 'the git url with no protocol, e.g.: github.com/diffplug/blowdryer')干.proj('plugin_tags', 'space-delimited list of tags for the gradle plugin portal')干.proj('plugin_list', 'space-delimited list of plugin names')干.proj("plugin_${plugin}_id", "for ${plugin}: apply plugin: 'id'")干.proj("plugin_${plugin}_impl", "for ${plugin}: implementationClass")干.proj("plugin_${plugin}_name", "for ${plugin}: name for the plugin portal")干.proj("plugin_${plugin}_desc", "for ${plugin}: description for the plugin portal")- optional:
"plugin_${plugin}_tags" : space-delimited list of tags to override plugin_tags only for ${plugin}
- requires
- base/maven - sets up maven-publish and javadoc
干.proj('git_url', 'the git url with no protocol, e.g.: github.com/diffplug/blowdryer')干.proj('maven_group', 'the maven group, recommend com.diffplug')干.proj('maven_artifact', 'the maven artifactId')干.proj('maven_name', 'human-friendly name')干.proj('maven_desc', 'human-friendly description')干.proj('javadoc_links', "space-delimited links, if you add '/package-list' to the urls you should get a package list")干.proj('license', 'supported: [apache, confidential, lgpl-2.1]')
- base/javadoc-agg - aggregates javadoc from subprojects
干.proj('javadoc_agg', 'space-delimited list of projects containing javadoc to be aggregated')- (also a subset of base/maven)
- base/sonatype - publishes to mavenCentral
- requires
id 'io.github.gradle-nexus.publish-plugin' version '1.0.0' - unless
enable_publishingis set ingradle.properties, this will be skipped 干.proj('nexus_user', 'username for nexus/mavencentral')干.proj('nexus_pass64', 'password for nexus/mavencentral')干.proj('gpg_key64', 'gpg --export-secret-keys --armor <key-id>')干.proj('gpg_passphrase', 'passphrase for unlocking gpg_key')- (also a subset of base/maven)
- requires
- base/osgi - adds OSGi metadata to the jar
- requires
id 'com.diffplug.osgi.bndmanifest' version '3.22.0'(or later) 干.proj('osgi_export', '-exportcontents bnd directive')干.proj('osgi_symbolic_name', 'Bundle-SymbolicName')- (also a subset of base/maven)
- requires
- base/autovalue - adds Google AutoValue 1.7
- requires
id 'com.diffplug.eclipse.apt' version '3.22.0'(or later) 干.proj('VER_AUTOVALUE', 'the autovalue version the user wants')
- requires
- swt/svg-images - renders SVG images from
src/svgintosrc/main/resources/svg-renderedat 1x and 2x DPI (in-line with SWT high-DPI support)- recommend adding
svg-rendered/to.gitignore - requires
id 'com.diffplug.image-grinder' version '2.1.2'(or later)
- recommend adding
- Thanks to Vladimir Sitnikov for his mdoclet workaround.
- Thanks to Lars Grefer and Dennis Fricke for
JavadocUtf8Plugin, licensed under the MIT License, used here.JavadocJarPlugin, licensed under the MIT License, used here.
- Thanks Netflix Build Language Plugins (nebula) for
NebulaAggregateJavadocPlugin, licensed under theApache 2.0 license, used here.