{"id":18009841,"url":"https://github.com/kaedea/intransitives","last_synced_at":"2025-07-26T03:05:02.999Z","repository":{"id":81348858,"uuid":"135251697","full_name":"kaedea/intransitives","owner":"kaedea","description":"Gradle plugin for intransitive-complie dependencies.","archived":false,"fork":false,"pushed_at":"2018-07-31T07:53:20.000Z","size":188,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-04-04T12:51:33.731Z","etag":null,"topics":["dependency-manager","gradle-plugin"],"latest_commit_sha":null,"homepage":null,"language":"Groovy","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/kaedea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2018-05-29T06:33:59.000Z","updated_at":"2018-07-31T07:53:21.000Z","dependencies_parsed_at":"2023-03-12T13:42:12.044Z","dependency_job_id":null,"html_url":"https://github.com/kaedea/intransitives","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/kaedea/intransitives","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaedea%2Fintransitives","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaedea%2Fintransitives/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaedea%2Fintransitives/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaedea%2Fintransitives/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaedea","download_url":"https://codeload.github.com/kaedea/intransitives/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaedea%2Fintransitives/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267109942,"owners_count":24037627,"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-07-26T02:00:08.937Z","response_time":62,"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":["dependency-manager","gradle-plugin"],"created_at":"2024-10-30T02:11:14.430Z","updated_at":"2025-07-26T03:05:02.953Z","avatar_url":"https://github.com/kaedea.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Intransitives\n\n[![Download](https://api.bintray.com/packages/kaedea/moe-studio/intransitives/images/download.svg)](https://bintray.com/kaedea/moe-studio/intransitives/_latestVersion)\n![version](https://jitpack.io/v/com.kaedea/intransitives.svg)\n\n![Banner](doc/banner.png)\n\nGradle plugin `intransitives` helps to make apis of transitive children dependencies invisible from user.\n\n## Problems\n\nWhen you add an dependency in `build.gradle`, Gradle will also compile transitive children dependencies by default. This behavior makes the dependencies manager much simpler but something we hope to hide the apis of children dependencies. For example, picasso depends on okhttp as the following\n\n  APP -\u003e Picasso -\u003e OkHttp\n\nIf we compile picasso, we will also compile okhttp (that is how picasso works). In another word, the apis of okhttp is visible to us though we do not compile it explictly. If we do not announce compling okhttp explictly, we should not access its apis. Because the implementaion of picasso might changes so that it does not compile okhttp any more.\n\n## Solution\n\nIf we want to avoid accessing of transitive apis, we should set `transitive = false` of complie while `transitive = true` of runtime (hide the apis in compile time and package the apis in runtime). Such as\n\n```groovy\ndependencies {\n    implementation ('com.squareup.picasso:picasso:latest.release') {\n        transitive = false\n    }\n    runtimeOnly ('com.squareup.picasso:picasso:latest.release') {\n        transitive = true\n    }\n}\n```\n\nAnd this is how `intransitives` works.\n\n## Getting Started\n\nJust apply the plugin in the `build.gradle` file of your module.\n\n```groovy\n// ~/project/build.gradle\n\n// 1. Add dependency\nbuildscript {\n    repositories {\n        jcenter()\n        maven { url 'https://jitpack.io' }\n    }\n    dependencies {\n        classpath 'com.kaedea:intransitives:latest.release'\n    }\n}\n\n// 2. Apply plugin\napply plugin: 'com.kaedea.intransitives'\nintransitives {\n    // 3. Move your dependencies here in need\n    implementation 'com.squareup.picasso:picasso:latest.release'\n}\n```\n\nUse task `:app:intransitives` to dump your intransitive dependencies confinguration.\n\n## Contributing\n\nCheck [CONTRIBUTING.md](/CONTRIBUTING.md).\n\n## License\n\nThe project is [Apache License, Version 2.0](/LICENSE) licensed.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaedea%2Fintransitives","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaedea%2Fintransitives","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaedea%2Fintransitives/lists"}