{"id":16558191,"url":"https://github.com/simonschiller/manifestprinter","last_synced_at":"2025-10-28T20:32:05.233Z","repository":{"id":43138074,"uuid":"511054563","full_name":"simonschiller/manifestprinter","owner":"simonschiller","description":"Showcases different ways of writing backwards-compatible Gradle plugins.","archived":false,"fork":false,"pushed_at":"2022-08-14T14:39:44.000Z","size":82,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-03-10T13:40:54.737Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/simonschiller.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}},"created_at":"2022-07-06T08:33:17.000Z","updated_at":"2022-07-12T18:10:01.000Z","dependencies_parsed_at":"2022-08-30T03:00:55.386Z","dependency_job_id":null,"html_url":"https://github.com/simonschiller/manifestprinter","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschiller%2Fmanifestprinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschiller%2Fmanifestprinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschiller%2Fmanifestprinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschiller%2Fmanifestprinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonschiller","download_url":"https://codeload.github.com/simonschiller/manifestprinter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219858824,"owners_count":16556040,"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":[],"created_at":"2024-10-11T20:09:51.935Z","updated_at":"2025-10-28T20:32:04.662Z","avatar_url":"https://github.com/simonschiller.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# manifestprinter\n\nThis project showcases different ways of writing backwards-compatible Gradle plugins. It accompanies a talk held at [droidcon Berlin 2022](https://www.droidcon.com/2022/08/03/writing-backwards-compatible-gradle-plugins/), you can find the slides for this talk on [Speaker Deck](https://speakerdeck.com/simonschiller/writing-backwards-compatible-gradle-plugins-droidcon-berlin-2022).\n\n### common\n\nShows how we can find out the version of a dependency (like the Android Gradle plugin) that has been resolved at runtime. \n\n### fixture\n\nShows how we can test our plugins against multiple Android Gradle plugin versions. \n\n### sample-groovy\n\nShows how a dynamically typed language like Groovy can be used to write code that is compatible with multiple Android Gradle plugin versions.\n\n### sample-multiversion\n\nShows how we can set up a Gradle project to compile against multiple Android Gradle plugin versions, so we can write typesafe code that is compatible across multiple Android Gradle plugin versions.\n\n### sample-reflection\n\nShows how reflection can be used to write code that is compatible with multiple Android Gradle plugin versions.\n\n### sample-shadow\n\nShows how third-party dependencies can be repackaged and shipped with Gradle plugins to avoid clashes and version inconsistencies for users.\n\n## License\n\n```\nCopyright 2022 Simon Schiller\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonschiller%2Fmanifestprinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonschiller%2Fmanifestprinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonschiller%2Fmanifestprinter/lists"}