{"id":15288361,"url":"https://github.com/vlsi/vlsi-release-plugins","last_synced_at":"2025-10-29T01:31:30.946Z","repository":{"id":36089811,"uuid":"190037263","full_name":"vlsi/vlsi-release-plugins","owner":"vlsi","description":"A set of plugins to simplify Gradle release tasks","archived":false,"fork":false,"pushed_at":"2024-08-14T13:01:15.000Z","size":1172,"stargazers_count":41,"open_issues_count":38,"forks_count":13,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-05T08:07:25.638Z","etag":null,"topics":["checksums","crlf","gradle","license","license-management","pgp-verification","plugin","release"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/vlsi.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}},"created_at":"2019-06-03T15:56:29.000Z","updated_at":"2024-09-08T09:11:33.000Z","dependencies_parsed_at":"2024-01-07T19:29:43.357Z","dependency_job_id":"ab5aba26-ce14-40d2-9ffb-0597b6e5a336","html_url":"https://github.com/vlsi/vlsi-release-plugins","commit_stats":{"total_commits":343,"total_committers":8,"mean_commits":42.875,"dds":"0.023323615160349864","last_synced_commit":"c6b1d520f038be7622bb0a211fe3a493af3f5d44"},"previous_names":[],"tags_count":114,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlsi%2Fvlsi-release-plugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlsi%2Fvlsi-release-plugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlsi%2Fvlsi-release-plugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlsi%2Fvlsi-release-plugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vlsi","download_url":"https://codeload.github.com/vlsi/vlsi-release-plugins/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238241922,"owners_count":19439778,"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","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":["checksums","crlf","gradle","license","license-management","pgp-verification","plugin","release"],"created_at":"2024-09-30T15:47:58.986Z","updated_at":"2025-10-29T01:31:30.326Z","avatar_url":"https://github.com/vlsi.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI Status](https://github.com/vlsi/vlsi-release-plugins/workflows/CI/badge.svg)](https://github.com/vlsi/vlsi-release-plugins/actions)\n\nAbout\n=====\n\nThis is a set of Gradle plugins to simplify release tasks\n\nChecksum Dependency Plugin\n==========================\n\nEnables to validate the checksums of the project dependencies (both plugins and regular dependencies).\nNote: this plugin has nothing to do with generating checksums.\nWhat it does it prevents man-in-the middle attack by enabling developers\nto declare the expected checksums.\n\nSee [checksum-dependency-plugin description](plugins/checksum-dependency-plugin/README.md) for installation and configuration options.\n\nJandex Gradle Plugin\n====================\n\nAllows building [Jandex](https://github.com/wildfly/jandex) class index.\nAn alternative use case is verification of the class files: if `jandex` fails to parse the file,\nthen the bytecode might be invalid.\n\nSee [jandex-plugin description](plugins/jandex-plugin/README.md) for configuration options.\n\nStage Vote Release Plugin\n=========================\n\nEnables to stage and vote on release artifacts before they are released.\n\nSee [stage-vote-release-plugin description](plugins/stage-vote-release-plugin/README.md) for configuration options.\n\nGradle Extensions Plugin\n========================\n\nSee [gradle-extensions-plugin description](plugins/gradle-extensions-plugin/README.md) for configuration options.\n\nEnables to access `Project` properties in a type-safe way:\n\n```kotlin\nval skipJavadoc by props()     // defaults to false\nval enableTests by props(true) // defaults to true\nval hello by props(\"world\")    // defaults to \"world\"\nif (project.props.bool(\"isOk\", default=true)) { ... }\n```\n\nIt improves test output and build failures as well:\n\u003cimg width=\"809\" height=\"455\" src=\"plugins/gradle-extensions-plugin/github_actions_tests.png\" alt=\"Sample GitHub Actions log that shows test results highlighting\"\u003e\n\nCRLF Plugin\n===========\n\nAdds Kotlin DSL to specify CRLF/LF filtering for `CopySpec`.\nEnables to use `.gitignore` and `.gitattributes` for building `CopySpec`.\n\nSee [crlf-plugin description](plugins/crlf-plugin/README.md) for configuration options.\n\n\nIDE Plugin\n==========\n\n* Configures copyright profile\n* Configures \"generated sources\"\n* Enables to configure \"post import\" tasks (== call task on project import to generate sources)\n\nLicense Gather Plugin\n=====================\n\nThe purpose of the plugin is to analyze and infer license names for the dependencies, and verify license compatibility.\n\nSee [license-gather-plugin description](plugins/license-gather-plugin/README.md) for configuration options.\n\nGettext Plugin\n==============\n\nThe plugin adds the following task classes to execute `GNU gettext` binaries:\n\n* `GettextTask` collects messages from the source files into `.pot`\n* `MsgAttribTask` processes `.po` files (e.g. for removal of obsolete messages)\n* `MsgMergeTask` updates `.po` files with missing messages from `.pot`\n* `MsgFmtTask` generates the resource bundle (e.g. Java source files for the resources)\n\nLicense\n-------\nThis library is distributed under terms of Apache License 2.0\n\nChange log\n----------\nv1.90\n* stage-vote-release: generate and publish checksums to SVN even if release artifact is UP-TO-DATE (regression since 1.75)\n* stage-vote-release: added previewSvnDist task to preview SVN dist contents without publishing it\n\nv1.89\n* checksum-dependency: reduce the number of idle threads\n* crlf: ignore inaccessible files/folders in gitignore filter\n\nv1.88\n* stage-vote-release: avoid failures when \"init\" does not exist\n* chore: fixed build warnings\n* checksum-dependency: infer artifact classifier from the file name\n* checksum-dependency: copy requested attributes to the configuration that resolves PGP signatures\n\nv1.87\n* gradle-extensions: requiredString, requiredBool, requiredInt, requiredLong property accessors\n* gradle-extensions: display TestNG initialization failures\n\nThanks to [Endor H](https://github.com/endorh) for contributing.\n\nv1.86\n* checksum-dependency: use full fingerprint for PGP verification\n\nv1.85\n* licence-gather: better support for build cache by adding PathSensitivity\n* checksum-dependency: cache PGP public keys under `%{ROOT_DIR}/gradle/checksum-dependency-plugin/cached-pgp-keys`\n* checksum-dependency: bump org.bouncycastle:bcpg-jdk15on to 1.70\n\nv1.84\n* no-op release, since some of the plugins failed to publish to Gradle Plugin Portal in v1.83\n\nv1.83\n* stage-vote-release: bump grgit to 4.1.1\n\nv1.82\n* gradle-extensions: render class name for JUnit4 parameterized tests with several test methods (they treated as suites in Gradle 7)\n\nv1.81\n* jandex: add @IgnoreEmptyDirectories to fix Gradle 7 warning\n* gettext: add @IgnoreEmptyDirectories to fix Gradle 7 warning\n\nv1.80\n* license-gather: use META-INF/licenses/$group/$module-$version for storing license files in jar\n* jandex: support Gradle Configuration Cache\n\nv1.79\n* license-gather: avoid generating directories that end with .jar to workaround OpenJDK's JarIndex issue\n\nv1.78\n* chore: bump Gradle 6.7 -\u003e 6.9.1\n* license-gather: ignore xml namespaces when parsing POM files (see [issue #43](https://github.com/vlsi/vlsi-release-plugins/issues/43))\n* license-gather: fix license inference from Bundle-License manifest attribute (see [issue #48](https://github.com/vlsi/vlsi-release-plugins/issues/48))\n* license-gather: implement VerifyLicenseCompatibilityTask for verifying license compatibility (see [pr #49](https://github.com/vlsi/vlsi-release-plugins/pull/49))\n* checksum-dependency: retrieve keys from https://keyserver.ubuntu.com, and https://keys.openpgp.org by default (drop SKS keyserver pool since it has been deprecated)\n\nThanks to [Florian Dreier](https://github.com/DreierF) for identifying bugs and suggesting fixes.\n\nv1.77\n* crlf-plugin: bump jgit to 5.13.0.202109080827-r\n* stage-vote-release: bump jgit to 5.13.0.202109080827-r\n\nv1.76\n* jandex-plugin: workaround warnings with forbiddenApis and compileTestJava\n\nv1.75\n* crlf-plugin: remove input specification from FindGitAttributes task properties to workaround non-declared task dependency warning (see https://github.com/gradle/gradle/issues/18882)\n* license-gather-plugin: support jars that have both /LICENSE and /META-INF/LICENSE files\n* gradle-extensions: avoid printing stacktrace when Kotlin compilation fails\n* gradle-extensions: avoid printing stacktraces for autostyle failures\n* stage-vote-release: use task.state instead of archiveFile.exists() to skip sha512 and sign tasks\n* jandex-plugin: add dependency for javadoc and sourcesJar tasks on processJandexIndex\n\nv1.74\n* checksum-dependency: skip checksum verification when artifact resolves to a directory\n* stage-vote-release: add workaround for Gradle 7.0 compatibility (see https://github.com/gradle/gradle/issues/16777)\n\nv1.73\n* jandex-plugin: fixed \"Task with name 'check' not found\" when the plugin is applied with `plugins { ... }`\n\nv1.72\n* jandex-plugin: add `maxErrors` option to show several errors rather than stop on the first one\n* gradle-extensions-plugin: fix output of exceptions with multiple nested suppressed exceptions\n\nv1.71\n* Add CI jobs with nightly and RC Gradle versions\n* jandex-plugin: build class file index via [Jandex](https://github.com/wildfly/jandex) or verify the bytecode\n\nv1.70\n* stage-vote-release: fix Gradle 6.0 warnings\n\nv1.69\n* license-gather-plugin: fix ignoreMissingLicenseFor annotations\n\nv1.68\n* license-gather-plugin: remove @Internal annotation from ignoreMissingLicenseFor\n\nv1.67\nSame as 1.66 (re-published because 1.66 artifacts were corrupted by Gradle Plugin Portal issue)\n\nv1.66\n* gradle-extensions-plugin: MavenPom.simplifyXml() to trim scope=compile and dependencyManagement from pom.xml\n* gradle-extensions-plugin: MavenPublication.versionFromResolution() to map versions in pom.xml to Gradle resolution results\n* gradle-extensions-plugin: Project.extraMavenPublications() to add extra Maven publications (e.g. publish shadow jar)\n\nv1.65\n* stage-vote-release-plugin: add `nexus.connectTimeout` and `nexus.operationTimeout` with default of 15 minutes (Maven Central is slow at times)\n* stage-vote-release-plugin: create rc and release tags only after artifacts are pushed to Nexus (e.g. if javadoc build fails, the tag is not required)\n* gradle-extensions-plugin: skip stacktrace for TaskSelectionException [issue#35](https://github.com/vlsi/vlsi-release-plugins/issues/35)\n\nv1.64\n* stage-vote-release-plugin: upate nexus-staging 0.2.0 -\u003e 0.4.0; gradle-nexus-staging-plugin 0.20.0 -\u003e 0.21.2\n* update jgit: 5.6.0.201912101111-r -\u003e 5.6.1.202002131546-r\n* update grgit: 3.1.1 -\u003e 4.0.1\n\nv1.63\n* gradle-extensions-plugin: refine condition for stacktrace printing\n\nv1.62\n* gradle-extensions-plugin: add `DomainObjectCollection.configureEach\u003cT\u003e` extension\n* gradle-extensions-plugin: reduce verbosity of the default exception printer (print only well-known exceptions and stacktraces by default like NPE)\n* stage-vote-release-plugin: refine -Prc input parameter validation\n* license-gather-plugin: refine `Apache2LicenseRenderer` to render custom licenses\n* all plugins: publish to Maven Central with PGP signatures\n\nv1.61\n* gradle-extensions-plugin: significantly improve stacktrace formatting, add task failure summary\n* checksum-dependency-plugin: removed http://keys.fedoraproject.org/ from keyserver list as it no longer works\n\nv1.60\n* gradle-extensions-plugin: add GitHub Actions error markers to test output\n* gettext-plugin: cleanup Gradle annotations\n\nv1.59\n* Skipped\n\nv1.58\n* gradle-extensions-plugin: enable coloring in test results by default (`-Pnocolor`, `-Pnocolor=true|false`)\n\nv1.57\n* Add gettext-plugin\n* Add `Test.printTestResults` (print test results, color output) function to gradle-extensions-plugin\n\nv1.56\n* Skipped\n\nv1.55\n* Build with Gradle 6.1.1\n\nv1.54\n* Replace Spotless -\u003e [Autostyle](https://github.com/autostyle/autostyle) for simpler code style management\n* Update org.eclipse.jgit: 5.4 -\u003e 5.6\n* stage-vote-release-plugin: fix race condition in nexus-publish afterEvaluate: provide username/password always\n* stage-vote-release-plugin: generate description for nexus staging repository\n* ide-plugin: update gradle-idea-ext: 0.5 -\u003e 0.7\n\nv1.53\n* stage-vote-release-plugin: expose NexusConfig#mavenCentral to enable publishing to Central\n\nv1.52\n* stage-vote-release-plugin: integrate signing, and support skipSign and useGpgCmd properties\n\nv1.51\n* stage-vote-release-plugin: expose releaseParams.svnDistEnabled to skip SVN publication\n* stage-vote-release-plugin: publish Git tag after publishing Nexus and SVN\n\nv1.50\n* stage-vote-release-plugin: expose releaseParams.gitRepoName to customize Git repository name\n\nv1.49.0\n* gradle-extensions-plugin: expose Project.props(Int), props(Long), props.string(...), props.int(...), props.long(...)\n* gradle-extensions-plugin: change Project.lastEditYear to find the maximum 4-digit integer\n* ide-plugin: expose ide.licenseHeader, ide.licenseHeaderJava, and ide.copyright(...). Fix default ASF copyright\n\nv1.48.0\n* stage-vote-release-plugin: workaround publishDist issue when SVN 1.9 is used\n\nv1.47.0\n* gradle-extensions-plugin: plugin for type-safe `Project` property access in `build.gradle.kts`\n\nv1.46.0\n* stage-vote-release-plugin: avoid failures in pushPreviewSite on Gradle version upgrade\n* stage-vote-release-plugin: allow uncommitted changes for generateVoteText / publishDist\n* crlf-plugin: fix handling of `.gitignore` files in subfolders\n\nv1.45.0\n* stage-vote-release-plugin: preserve `**/.git/**` in syncPreviewSiteRepo\n* stage-vote-release-plugin: avoid NPE in GitPushTask when pushing new tag\n* stage-vote-release-plugin: avoid rebuilding artifacts for generateVoteText/publishDist (fetch files from SVN dist)\n* ide-plugin: support generatedJavaSources for different sourceSets (main, test)\n* license-gather-plugin: use Gradle 7-compatible API workerExecutor.noIsolation instead of .submit\n\nv1.44.0\n* stage-vote-release-plugin: disable automatic execution of removeStaleArtifacts when publishing the release\n\nv1.43.0\n* stage-vote-release-plugin: support Gradle 6.0\n\nv1.42.0\n* stage-vote-release-plugin: fix logging in RemoveStaleArtifactsTask\n\nv1.41.0\n* stage-vote-release-plugin: implement removeStaleArtifacts task to cleanup dist.apache.org\n* stage-vote-release-plugin: hide technical tasks\n* stage-vote-release-plugin: improve logging in GitPushTask\n* stage-vote-release-plugin: detect \"stage SVN revision\"\n\nv1.40.0\n* stage-vote-release-plugin: avoid including artifact name in ReleaseArtifact.getSha512\n\nv1.39.0\n* stage-vote-release-plugin: validate asfTest...Username and asfTest...Password properties\n\nv1.38.0\n* stage-vote-release-plugin: release tag should be created for release candidate commit, not the current HEAD\n\nv1.37.0\n* stage-vote-release-plugin: execute sha512 and signing tasks only when input files exist\n\nv1.36.0\n* checksum-dependency-plugin: use `MD5SUM` format for `.sha512` files so the checkums can be verified with `shasum -c *.sha512`\n\nv1.35.0\n* checksum-dependency-plugin: ignore unresovable dependencies (see https://youtrack.jetbrains.com/issue/KT-34394 )\n\nv1.34.0\n* crlf-plugin: proper support of absolute paths in non-root gitignore files\n\nv1.33.0\n* checksum-dependency-plugin: reduce verbosity by using the actual duration of \"PGP key retrieval\" to decide if the timeout is loggable or not\n* stage-vote-release-plugin: treat generateVoteText as non-incremental task (avoid caching of the mails between rc1, rc2, and so on)\n* stage-vote-release-plugin: skip SHA-512 computation when the original artifact task is skipped\n\nv1.32.0\n* stage-vote-release-plugin: add releaseArtifacts {...} extension to pass artifacts across Gradle's modules\n* stage-vote-release-plugin: validate Git username/password before release starts\n\nv1.31.0\n* checksum-dependency-plugin: added `pgpMinLoggableTimeout` (default 4 seconds) to reduce the verbosity of the plugin\n* checksum-dependency-plugin: added `checksumUpdateAll` property for simplified `checksum.xml` update without build failure\n\nv1.30.0\n* checksum-dependency-plugin: show PGP signature resolution time (#21)\n* checksum-dependency-plugin: disable verification when `dependencyUpdates` task is present on the task execution graph (#20)\n\nv1.29.0\n* checksum-dependency-plugin: resolve and verify PGP in parallel, compute SHA in parallel\n\nv1.28.0\n* checksum-dependency-plugin: fix resolution of copied configurations (== fix compatibility with https://github.com/ben-manes/gradle-versions-plugin)\n* checksum-dependency-plugin: add checksumIgnore property for disabling the plugin (e.g. when certain tasks are not compatible with verification)\n\nv1.27.0\n* checksum-dependency-plugin: support Gradle 4.4.1\n\nv1.26.0\n* checksum-dependency-plugin: fix logging for \"PGP key...download time: 0ms\"\n\nv1.24.0\n* checksum-dependency-plugin: failover across multiple keyservers and DNS responses\n\nv1.23.0\n* checksum-dependency-plugin: support Gradle 4.10.2\n\nv1.22.0\n* checksum-dependency-plugin: add `\u003cignored-keys\u003e` to prevent resolution of known to be absent keys\n\nv1.21.0\n* checksum-dependency-plugin: PGP-based dependency verification (see [detailed description](plugins/checksum-dependency-plugin/README.md))\n\nv1.20.0\n* checksum-dependency-plugin: properly track `.pom` artifacts (and other non-jar artifacts with default classifier)\n\nv1.19.0\n* checksum-dependency-plugin: include `classifier` and `extension` to artifact key\n\nv1.18.0\n* checksum-dependency-plugin: improve logging\n\nv1.17.0\n* checksum-dependency-plugin: new plugin to verify the downloaded dependencies on resolution\n* all plugins: remove Implementation-Version manifest attribute to make jars have\nconsistent checksums across versions\n* stage-vote-release-plugin: make sitePreviewEnabled configurable via property\n\nv1.16.0\n* stage-vote-release-plugin: make -Prc optional for pushPreviewSite\n\nv1.15.0\n* stage-vote-release-plugin: validate Git credentials\n* stage-vote-release-plugin: use $it-site.git and $it-site-preview.git name conventions\n\nv1.14.0\n* stage-vote-release-plugin: use property value instead of name for Git credentials\n\nv1.13.0\n* stage-vote-release-plugin: allow to publish to AFF repository via -Pasf\n\nv1.12.0\n* Add .editorconfig\n* stage-vote-release-plugin: take RepositoryType.PROD/TEST from \"asf\" property\n* stage-vote-release-plugin: add releaseParams.rc, releaseParams.release and releaseParams.committerId properties\n* stage-vote-release-plugin: add GitCreateTagTask, GitPushTask\n* stage-vote-release-plugin: add option to automatically generate SHA512\n* stage-vote-release-plugin: allow to select between GitHub and GitBox push alternatives\n* stage-vote-release-plugin: add pre-release validations\n* stage-vote-release-plugin: create and push RC and Release tags\n* stage-vote-release-plugin: add ReleaseExtension#componentName (a sub-component under TLP)\n* stage-vote-release-plugin: load stagingRepositoryId for release task\n* stage-vote-release-plugin: avoid parallel execution of initializeNexusStagingRepository to improve task concurrency\n* ide-plugin: support generatedSources in Eclipse\n* license-gather-plugin: exclude txt-based licenses from the jar to save some space\n\nv1.11.0\n* stage-vote-release-plugin: require Nexus username/password only when release task is used\n\nv1.10.0\n* stage-vote-release-plugin: fix asfSvnUsername should be used instead of asfasfSvnUsername\n\nv1.9.0\n* stage-vote-release-plugin: properly support username/password for Nexus and SVN\n* stage-vote-release-plugin: make sitePreview optional\n\nv1.8.0\n* stage-vote-release-plugin: add ReleaseExtension#validateReleaseParams(Runnable) to enable fail-fast on releasing SNAPSHOT versions\n\nv1.7.0\n* crlf-plugin: add CrLfSpec { CopySpec.textAuto() } for simplified handling of text files\n\nv1.6.0\n* license-gather-plugin: build \"predict license by text\" model at the build time\n\nv1.5.0\n* stage-vote-release-plugin: Project.licensesCopySpec includes NOTICE and license by default\n\nv1.3.0\n* Move gitattributes and gitignore to crlf plugin (from stage-vote-release-plugin)\n* Add workaround for https://github.com/gradle/gradle/issues/1191 (Copy tasks do not consider filter/eachFile/expansion properties in up-to-date checks)\n\nv1.2.0\n* stage-vote-release-plugin: support `.gitignore` and `.gitattributes` in building `CopySpec`\n\nv1.0.0\n* Initial release: basic license gathering\n\nAuthor\n------\nVladimir Sitnikov \u003csitnikov.vladimir@gmail.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlsi%2Fvlsi-release-plugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvlsi%2Fvlsi-release-plugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlsi%2Fvlsi-release-plugins/lists"}