{"id":20713832,"url":"https://github.com/diffplug/blowdryer-diffplug","last_synced_at":"2025-10-14T21:05:06.505Z","repository":{"id":56676578,"uuid":"225068334","full_name":"diffplug/blowdryer-diffplug","owner":"diffplug","description":"DiffPlug's scripts for use with blowdryer","archived":false,"fork":false,"pushed_at":"2025-08-22T18:11:12.000Z","size":485,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-22T20:54:36.485Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diffplug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-11-30T20:50:23.000Z","updated_at":"2025-08-22T18:11:16.000Z","dependencies_parsed_at":"2024-06-06T18:47:52.099Z","dependency_job_id":"a49f7739-7ed4-4e7c-8072-3c74a54adca0","html_url":"https://github.com/diffplug/blowdryer-diffplug","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/diffplug/blowdryer-diffplug","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diffplug%2Fblowdryer-diffplug","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diffplug%2Fblowdryer-diffplug/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diffplug%2Fblowdryer-diffplug/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diffplug%2Fblowdryer-diffplug/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diffplug","download_url":"https://codeload.github.com/diffplug/blowdryer-diffplug/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diffplug%2Fblowdryer-diffplug/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279021238,"owners_count":26087017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T02:27:32.195Z","updated_at":"2025-10-14T21:05:06.499Z","avatar_url":"https://github.com/diffplug.png","language":"Java","readme":"\n# DiffPlug [Blowdryer](https://github.com/diffplug/blowdryer) scripts\n\n[![License Apache 2.0](https://img.shields.io/badge/license-apache--2.0-brightgreen.svg)](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0))\n[![Changelog](https://img.shields.io/badge/keepachangelog-yes-brightgreen.svg)](#changelog)\n[![CircleCI](https://circleci.com/gh/diffplug/blowdryer-diffplug.svg?style=shield)](https://circleci.com/gh/diffplug/blowdryer-diffplug)\n\n# Changelog\n## [Unreleased]\n\n## [9.1.0] - 2025-08-22\n### Added\n- In `settings.gradle`, add `apply from: com.diffplug.blowdryer.Blowdryer.file('base/buildscan-on-ci.gradle')` and you'll get buildscans in CI.\n\n## [9.0.5] - 2025-07-29\n### Fixed\n- `changelogBumpFreshmarkGitAdd` no longer triggers a \"deprecated in Gradle 9\" warning.\n\n## [9.0.4] - 2025-07-08\n### Changed\n- Bump sonatype URLs now that [the old ones are dead](https://github.com/diffplug/spotless/pull/2539).\n\n## [9.0.3] - 2025-06-27\n### Changed\n- Bumpled Kotlin to 2.2\n- Added `-Xconsistent-data-class-copy-visibility` to `compileKotlin` and `compileTestKotlin`\n\n## [9.0.2] - 2025-06-23\n### Fixed\n- More spotless deprecation warnings.\n\n## [9.0.1] - 2025-06-23\n### Fixed\n- Fix spotless deprecation warnings.\n- Fix assignment deprecation warnings in `javadoc-view`.\n\n## [9.0.0] - 2025-05-27\n### Fixed\n- **BREAKING** updating signing subkey to match what our org-level GitHub actions actually has.\n\n## [8.0.4] - 2025-05-27\n### Changed\n- Bump all versions to latest, especially Kotlin `2.1.0` -\u003e `2.1.21`.\n- Hardcoded the `2C7F998F4272C851` signing subkey for our new GPG setup.\n- Better default tag message for spotless-changelog.\n\n## [8.0.3] - 2024-12-11\n### Changed\n- Bump plugin versions to latest (Kotlin 2.1.0).\n\n## [8.0.2] - 2024-09-03\n### Changed\n- Bump plugin versions to latest.\n\n## [8.0.1] - 2024-08-04\n### Changed\n- Tag message now has the `v{{version}}\\n\\n{changes}` format, as workaround for [cli/cli#9299](https://github.com/cli/cli/issues/9299).\n\n## [8.0.0] - 2024-07-08\n### Changed\n- **BREAKING** `spotlessChangelog` now creates GitHub releases by default ([#6](https://github.com/diffplug/blowdryer-diffplug/pull/6))\n  - you need to update your `deploy.yml`\n  - if you set the `tagPrefix`, then you'll need to update the `runAfterPush`\n  - see PR above for details\n\n## [7.3.0] - 2024-06-06\n### Added\n- `spotless/kotlin-dense.gradle` for tight packing\n### Changed\n- Bump all plugin versions, in particular Kotlin to 2.0.0\n\n## [7.2.0] - 2023-12-27\n### Added\n- Publishing the java part of Kotlin multiplatform jars is now supported.\n\n## [7.1.1] - 2023-12-11\n### Changed\n- Removed `com.diffplug.eclipse.apt` from `base/autovalue` since we have mostly moved to IntelliJ.\n- Bump all plugins to latest, especially Kotlin to `1.9.21`\n### Fixed\n- Maven plugin is now friendly with Kotlin Multiplatform.\n\n## [7.1.0] - 2023-06-15\n### Added\n- Add `matconsolectl` license.\n### Changed\n- Bump Kotlin plugins to latest, `1.8.20` -\u003e `1.8.22`, and all other plugins too.\n\n## [7.0.2] - 2023-04-03\n### Changed\n- Bump Kotlin plugins to latest, `1.8.0` -\u003e `1.8.20`.\n\n## [7.0.1] - 2023-02-28\n### Changed\n- Bump plugins to latest, which means build now requires Java 11.\n### Fixed\n- `spotlessFreshmark` now runs on Java 17.\n\n## [7.0.0] - 2023-01-28\n### Added\n- `plugin.versions` and `plugin-kotlin.versions` to take advantage of the new Blowdryer version syncing.\n- `spotlessChangelog { appendDashSnapshotUnless_dashPrelease = true` because it's safer.\n### Changed\n- **BREAKING** renamed `java8.gradle` to `java.gradle` which requires `ver_java` property.\n- `spotlessChangelog { branch 'release' ...` because fine-grained tokens can't push to a protected `main`.\n\n## [6.0.3] - 2023-01-28\n### Fixed\n- `spotlessChangelog { branch 'release' ...` because fine-grained tokens can't push to a protected `main`.\n\n## [6.0.2] - 2023-01-28\n### Fixed\n- Use `nexus_pass64` instead of `nexus_pass`.\n\n## [6.0.1] - 2022-12-30\n### Fixed\n- Gradle plugin publishing.\n\n## [6.0.0] - 2022-12-30\n### Fixed\n- **BREAKING** New minimum requirements `gradle:7.6` and `com.gradle.plugin-publish:1.1.0`, adapted to those changes.\n- **BREAKING** Remove support for `org.jdrupes.mdoclet`.\n\n## [5.2.1] - 2022-04-01\n### Fixed\n- `base/kotlin` now specifies `freeCompilerArgs = [\"-Xjvm-default=all\"]` so that Kotlin interface method implementations can be used from Java.\n\n## [5.2.0] - 2022-02-15\n### Added\n- `base/kotlin.gradle`\n### Fixed\n- Make the eclipse plugin optional for `gradle-plugin.gradle`\n\n## [5.1.3] - 2021-12-16\n### Fixed\n- Update sonatype URL to [`https://s01.oss.sonatype.org/`](https://s01.oss.sonatype.org/) since we migrated for better performance.\n\n## [5.1.2] - 2021-11-10\n### Fixed\n- Fix sonatype publishing for multi-module projects.\n\n## [5.1.1] - 2021-10-21\n### Fixed\n- `gpg64` from sonatype is now read using `干.proj` as intended.\n\n## [5.1.0] - 2021-09-18\n### Added\n- Builds that do not have Sonatype publish plugin applied now assume that they are publishing to GitLab.\n\n## [5.0.6] - 2021-07-18\n### Fixed\n- Bugfix for previous.\n\n## [5.0.5] - 2021-07-18 [YANKED]\n### Fixed\n- Now encodes gpg key using Base64 which actually works on CircleCI.\n\n## [5.0.4] - 2021-07-18 [YANKED]\n### Fixed\n- We were sometimes deploying gradle plugins without also deploying to maven, now fixed.\n- We yanked all earlier versions of 5.0.x to force an update because this is a fairly pernicious error.\n\n## [5.0.3] - 2021-07-17 [YANKED]\n### Fixed\n- `sourcesJar` no longer throws warnings on Gradle 7.1\n- Only use `org.jdrupes.mdoclet` on Java 8 and below\n\n## [5.0.2] - 2021-05-30 [YANKED]\n### Fixed\n- no more Gradle 7.0 warnings abour `generateMetadataFileForPluginMavenPublication` having undeclared dependencies.\n\n## [5.0.1] - 2021-05-29 [YANKED]\n### Fixed\n- no more errors on machines where `enable_publishing` hasn't been set\n\n## [5.0.0] - 2021-05-28 [YANKED]\n### Added\n- **BREAKING** `base/autovalue` now requires a `VER_AUTOVALUE` parameter\n\n## [4.0.3] - 2021-05-11\n### Fixed\n- yet more sonatype fixes\n\n## [4.0.2] - 2021-04-10\n### Fixed\n- more sonatype fixes\n\n## [4.0.1] - 2021-04-09\n### Fixed\n- fix sonatype deployment\n\n## [4.0.0] - 2021-04-09\n### Added\n- `base/sonatype` has been added (because **BREAKING** `base/bintray` has been removed)\n\n## [3.3.0] - 2021-02-19\n### Added\n- Added `lgpl-2.1` as a supported license.\n\n## [3.2.5] - 2020-10-14\n### Changed\n- Adopt the new `spotless` plugin coordinate at `com.diffplug.spotless`\n- Bump `VER_AUTOVALUE` from `1.7.3` to `1.7.4`.\n\n## [3.2.4] - 2020-06-16\n### Changed\n- We now do formatting relative to `origin/main`.\n- Added missing `(C)` in our apache copyright header.\n- Bump `VER_AUTOVALUE` from `1.7` to `1.7.3`.\n\n## [3.2.3] - 2020-06-06\n### Fixed\n- `spotlessApply -PspotlessSetLicenseHeaderYearsFromGitHistory=true` now updates all files (as intended) rather than only the changed ones.\n\n## [3.2.2] - 2020-06-06\n### Fixed\n- `org.jdrupes.mdoclet` was failing to resolve when used with `javadoc-agg.gradle`\n\n## [3.2.1] - 2020-06-05\n### Changed\n- We now require Spotless `4.3+`, because we do formatting relative to `origin/master`.\n  * If you run `spotlessApply -PspotlessSetLicenseHeaderYearsFromGitHistory=true` then every license header will be updated appropriately\n\n## [3.2.0] - 2020-04-07\n### Added\n- `base/autovalue` for applying Google AutoValue\n- `swt/svg-images` renders SVG images with SWT high-DPI support\n### Fixed\n- Added an error message to prevent accidental misuse of the `git_url` parameter\n### Changed\n- Better short names for `license=confidential`\n- `javadoc-markdown.gradle` now requires that `id 'org.jdrupes.mdoclet' version '1.0.9'` (or later) is on the classpath\n- Migrate from `com.diffplug.gradle.x` to `com.diffplug.x` for goomph\n\n## [3.1.0] - 2020-01-12\n### Added\n- Support `confidential` as a value for `license`.\n\n## [3.0.0] - 2020-01-11\n### Added\n- Inserted commented-out `干.mustRunAfter`.  No behavior change, but we'll try to keep these up-to-date in case [diffplug/blowdryer#8](https://github.com/diffplug/blowdryer/issues/8) gets implemented. ([a9c3489](https://github.com/diffplug/blowdryer-diffplug/commit/a9c34895a00c4a7ee2e76db3545aa6a12bd4effa))\n- Every javadoc task now has `javadocView` task, which will render and open the javadoc in a browser.\n  - **BREAKING** Requires that at least one of the [`goomph`](https://github.com/diffplug/goomph) plugins is on the classpath.\n- Every javadoc task now uses [jdrupes-mdoclet](https://github.com/mnlipp/jdrupes-mdoclet).\n\n## [2.0.0] - 2020-01-02\n### Added\n- `base/changelog`, which pulls version information from a changelog in either the same project or the parent project\n  - Also hooked into `spotless/freshmark`, to pass the `versionNext` and `versionLast` properties\n- `base/bintray`, for pushing to bintray and mavenCentral\n- `base/osgi`, for OSGi metadata\n- `base/javadoc-agg`, for aggregating javadoc from subprojects into one central artifact\n- support for per-plugin tags in `base/gradle-plugin`.\n- `spotless/freshmark` now sets `versionLast` property if there is a `spotless-changelog` plugin applied somewhere\n  - **BREAKING** the spotless plugin must be declared in `settings.gradle` or `buildSrc`.  That's probably a good pattern in general.\n### Changed\n- 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.\n### Fixed\n- Set javadoc to use `UTF-8` encoding.\n- If you apply `spotless/java` to the root project, it will now fix `buildSrc/*.gradle` in addition to the `*.gradle` which it already fixed.\n\n## [1.0.0] - 2019-12-10\nFirst release.\n\n\u003c!-- END CHANGELOG --\u003e\n\n\n## Users\n\n| user                                                                     | updated on  | to version |\n| :----------------------------------------------------------------------- | :---------- | :--------- |\n| [atplug](https://github.com/diffplug/atplug)                             | 2023-01-28  | `7.0.0`    |\n| [blowdryer](https://github.com/diffplug/blowdryer)                       | 2023-01-28  | `7.0.0`    |\n| [durian-globals](https://github.com/diffplug/durian-globals)             | 2020-06-05  | `3.2.2`    |\n| [durian-rx](https://github.com/diffplug/durian-rx)                       | 2020-01-12  | `3.1.0`    |\n| [durian-swt](https://github.com/diffplug/durian-swt)                     | 2021-12-16  | `5.1.3`    |\n| [goomph](https://github.com/diffplug/goomph)                             | 2023-02-28  | `7.0.1`    |\n| [freshmark](https://github.com/diffplug/freshmark)                       | 2023-02-05  | `7.0.0`    |\n| [jscriptbox](https://github.com/diffplug/jscriptbox)                     | 2023-02-05  | `7.0.0`    |\n| [libxdiff](https://github.com/diffplug/libxdiff)                         | 2021-02-18  | `3.3.0`    |\n| [image-grinder](https://github.com/diffplug/image-grinder)               | 2020-12-16  | `5.1.3`    |\n| [spotless-changelog](https://github.com/diffplug/spotless-changelog)     | 2023-01-28  | `7.0.0`    |\n| [webtools](https://github.com/diffplug/webtools)                         | 2025-07-28  | `9.0.5`    |\n| *internal projects*      |  |  |\n| [buildcloset](http://gitlab.diffplug.local/diffplug/buildcloset/)        | 2020-01-12  | `3.2.5`    |\n| website                                                                  | 2021-05-28  | `5.0.2`    |\n\n## Available scripts (without `.gradle` extension)\n\n- **spotless/freshmark** - applies to `*.gradle` and `*.md`\n  - if `com.diffplug.spotless-changelog` is applied in this or the parent project, then `versionLast` will be set in freshmark\n- **spotless/java** - applies to `*.gradle` and java sourcesets\n  - `干.proj('license', 'supported: [apache, confidential, lgpl-2.1]')`\n- **base/java** - sets up java 8 with UTF-8, clean eclipse projects, and mavenCentral\n  - `干.proj('ver_java', 'target JVM bytecode (8, 11, etc)')`\n- **base/kotlin** - apply `org.jetbrains.kotlin.jvm`\n  - `干.projOptional('kotlin_jvmTarget', 'JVM target for the kotlin plugin')`\n- **base/changelog** - pulls version information from a changelog in either the same project or the parent project\n- **base/gradle-plugin** - sets up gradle plugin metadata and plugin portal publishing, fixes eclipse to hook gradle\n  - requires `id 'com.gradle.plugin-publish' version '0.10.1'`\n  - `干.proj('git_url', 'the git url with no protocol, e.g.: github.com/diffplug/blowdryer')`\n  - `干.proj('plugin_tags', 'space-delimited list of tags for the gradle plugin portal')`\n  - `干.proj('plugin_list', 'space-delimited list of plugin names')`\n    - `干.proj(\"plugin_${plugin}_id\", \"for ${plugin}: apply plugin: 'id'\")`\n    - `干.proj(\"plugin_${plugin}_impl\", \"for ${plugin}: implementationClass\")`\n    - `干.proj(\"plugin_${plugin}_name\", \"for ${plugin}: name for the plugin portal\")`\n    - `干.proj(\"plugin_${plugin}_desc\", \"for ${plugin}: description for the plugin portal\")`\n    - optional: `\"plugin_${plugin}_tags\" : space-delimited list of tags to override plugin_tags only for ${plugin}`\n- **base/maven** - sets up maven-publish and javadoc\n  - `干.proj('git_url', 'the git url with no protocol, e.g.: github.com/diffplug/blowdryer')`\n  - `干.proj('maven_group', 'the maven group, recommend com.diffplug')`\n  - `干.proj('maven_artifact', 'the maven artifactId')`\n  - `干.proj('maven_name', 'human-friendly name')`\n  - `干.proj('maven_desc', 'human-friendly description')`\n  - `干.proj('javadoc_links', \"space-delimited links, if you add '/package-list' to the urls you should get a package list\")`\n  - `干.proj('license', 'supported: [apache, confidential, lgpl-2.1]')`\n- **base/javadoc-agg** - aggregates javadoc from subprojects\n  - `干.proj('javadoc_agg', 'space-delimited list of projects containing javadoc to be aggregated')`\n  - (also a subset of **base/maven**)\n- **base/sonatype** - publishes to mavenCentral\n  - requires `id 'io.github.gradle-nexus.publish-plugin' version '1.0.0'`\n  - unless `enable_publishing` is set in `gradle.properties`, this will be skipped\n  - `干.proj('nexus_user', 'username for nexus/mavencentral')`\n  - `干.proj('nexus_pass64', 'password for nexus/mavencentral')`\n  - `干.proj('gpg_key64',  'gpg --export-secret-keys --armor \u003ckey-id\u003e')`\n  - `干.proj('gpg_passphrase', 'passphrase for unlocking gpg_key')`\n  - (also a subset of **base/maven**)\n- **base/osgi** - adds OSGi metadata to the jar\n  - requires `id 'com.diffplug.osgi.bndmanifest' version '3.22.0'` (or later)\n  - `干.proj('osgi_export', '-exportcontents bnd directive')`\n  - `干.proj('osgi_symbolic_name', 'Bundle-SymbolicName')`\n  - (also a subset of **base/maven**)\n- **base/autovalue** - adds Google AutoValue 1.7\n  - requires `id 'com.diffplug.eclipse.apt' version '3.22.0'` (or later)\n  - `干.proj('VER_AUTOVALUE', 'the autovalue version the user wants')`\n- **swt/svg-images** - renders SVG images from `src/svg` into `src/main/resources/svg-rendered` at 1x and 2x DPI (in-line with SWT high-DPI support)\n  - recommend adding `svg-rendered/` to `.gitignore`\n  - requires `id 'com.diffplug.image-grinder' version '2.1.2'` (or later)\n\n# Acknowledgements\n\n- Thanks to [Vladimir Sitnikov](https://github.com/vlsi) for his [mdoclet workaround](https://github.com/autostyle/autostyle/blob/f201199bc327887225db38ae34261bfb4a861527/buildSrc/src/main/kotlin/mdoclet.gradle.kts).\n- Thanks to [Lars Grefer](https://github.com/larsgrefer) and [Dennis Fricke](https://github.com/Frisch12) for\n  - [`JavadocUtf8Plugin`](https://github.com/freefair/gradle-plugins/blob/6d6f5ff6036e7da1c329075a02c6452c0bb669be/maven-plugin/src/main/java/io/freefair/gradle/plugins/maven/javadoc/JavadocUtf8Plugin.java), licensed under the [MIT License](https://github.com/freefair/gradle-plugins/blob/6d6f5ff6036e7da1c329075a02c6452c0bb669be/LICENSE), used [here](https://github.com/diffplug/blowdryer-diffplug/blob/9fcb5e22b9ba2cc1c0884c4fb60b4080687b2435/src/main/resources/base/javadoc-agg.gradle#L38-L41).\n  - [`JavadocJarPlugin`](https://github.com/freefair/gradle-plugins/blob/6d6f5ff6036e7da1c329075a02c6452c0bb669be/maven-plugin/src/main/java/io/freefair/gradle/plugins/maven/javadoc/JavadocJarPlugin.java), licensed under the [MIT License](https://github.com/freefair/gradle-plugins/blob/6d6f5ff6036e7da1c329075a02c6452c0bb669be/LICENSE), used [here](https://github.com/diffplug/blowdryer-diffplug/blob/9fcb5e22b9ba2cc1c0884c4fb60b4080687b2435/src/main/resources/base/javadoc-agg.gradle#L52-L60).\n- Thanks [Netflix Build Language Plugins (nebula)](https://github.com/nebula-plugins) for [`NebulaAggregateJavadocPlugin`](https://github.com/nebula-plugins/gradle-aggregate-javadocs-plugin/blob/8deca214e2ec2463b7d23c46d17b33edf60a2360/src/main/groovy/nebula/plugin/javadoc/NebulaAggregateJavadocPlugin.groovy), licensed under the [`Apache 2.0 license`](https://github.com/nebula-plugins/gradle-aggregate-javadocs-plugin/blob/8deca214e2ec2463b7d23c46d17b33edf60a2360/LICENSE), used [here](https://github.com/diffplug/blowdryer-diffplug/blob/9fcb5e22b9ba2cc1c0884c4fb60b4080687b2435/src/main/resources/base/javadoc-agg.gradle#L22-L28).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiffplug%2Fblowdryer-diffplug","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiffplug%2Fblowdryer-diffplug","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiffplug%2Fblowdryer-diffplug/lists"}