{"id":21820300,"url":"https://github.com/trademe/includeme","last_synced_at":"2025-04-14T02:44:44.513Z","repository":{"id":30492983,"uuid":"125123433","full_name":"TradeMe/IncludeMe","owner":"TradeMe","description":"A Gradle plugin that simplifies working with composite builds","archived":false,"fork":false,"pushed_at":"2022-03-30T20:33:21.000Z","size":81,"stargazers_count":25,"open_issues_count":1,"forks_count":4,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-10T06:45:01.389Z","etag":null,"topics":["android","composite-builds","gradle","gradle-plugin","gradle-sync","java","kotlin"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TradeMe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null}},"created_at":"2018-03-13T22:37:00.000Z","updated_at":"2024-04-07T05:34:37.000Z","dependencies_parsed_at":"2022-08-07T15:15:58.035Z","dependency_job_id":null,"html_url":"https://github.com/TradeMe/IncludeMe","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TradeMe%2FIncludeMe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TradeMe%2FIncludeMe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TradeMe%2FIncludeMe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TradeMe%2FIncludeMe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TradeMe","download_url":"https://codeload.github.com/TradeMe/IncludeMe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248812830,"owners_count":21165491,"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":["android","composite-builds","gradle","gradle-plugin","gradle-sync","java","kotlin"],"created_at":"2024-11-27T16:31:12.463Z","updated_at":"2025-04-14T02:44:44.490Z","avatar_url":"https://github.com/TradeMe.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IncludeMe\n\nIncludeMe is a Gradle plugin that simplifies working with [composite builds.](https://docs.gradle.org/current/userguide/composite_builds.html)\n\nIncludeMe scans directories for Gradle projects and provides a simple toggle to include a project as a composite build. \n\nNo more trying to remember project paths or editing settings.gradle! \n\nWhat are composite builds?\n-----\n*From the Gradle documentation:*\n\n\u003e A composite build is simply a build that includes other builds. In many ways a composite build is similar to a Gradle multi-project build, except that instead of including single projects, complete builds are included.\n\nComposite builds make it really easy to work with external projects and libraries by including them as if they were a module in the current project. \n\nDependency substitution is handled by Gradle, so rather than publishing a library snapshot the project can simple be compiled.\n\nUsage\n-----\n\nApply IncludeMe to the settings.gradle file in your project:\n\n```groovy\nbuildscript {\n    repositories {\n        jcenter()\n    }\n\n    dependencies {\n        classpath 'nz.co.trademe.includeme:includeme:1.0.4'\n    }\n}\n\ninclude ':app'\n\napply plugin: 'nz.co.trademe.includeme'\n\n```\n\nAfter a Gradle sync, IncludeMe will create a `include.properties` file in the project:\n\n```\nmyModule=false\nmyLibrary=false\n```\n\nChange the value of these properties (and perform a Gradle sync) to include the project as a composite build. 🎉\n\nThe `include.properties` should be added to `.gitignore`.\n\nRequirements\n-----\n\n**Note:** IncludeMe requires Gradle 4.4 or higher. This version of Gradle includes a fix for the buildscript classpath issue with Android projects.\n\nThe warning for this issue has been removed in Android Gradle Plugin 3.1.0, but if using a version below 3.1.0, the following will need to be added to the projects `gradle.properties`:\n\n```\nandroid.enableBuildScriptClasspathCheck=false\n```\n\nSearch paths\n-----\n\nIncludeMe will search for Gradle projects in the projects parent directory by default.\n\nDifferent search paths (or multiple paths) can be declared in a projects `local.properties`, `gradle.properties` or the users `gradle.properties` file:\n\n```\nincludeme.searchpaths=~/workspace/projects,~/workspace/libraries\n```\n\nWhitelist\n-----\n\nA project whitelist can also be setup to tell IncludeMe to only look for specific projects:\n\n```\nincludeme.whitelist=myModule,myLibrary\n```\n\nThe whitelist should include project directory names.\n\n\nTroubleshooting\n-----\n\nIf you find that IncludeMe is including a project in the build, but Gradle is still compiling the remote dependency rather than the project sources, the included project may not be set up correctly.\n\nGradle Composite Builds require that the projects `group` and `name` match the artifact group and name.\n\ni.e. if the artifact is `com.myawesomecompany:alibrary:1.0.0`, then the library module should be named `alibrary` and the group should be set to `com.myawesomecompany`.\n\n### Setting a group\nThe group for a module or project can be set with the `group` dsl. \n\n```groovy\n//in build.gradle (library module)\n\ngroup = com.myawesomecompany\n\n```\n\n### Setting the module/project name\n\nThe project/module name comes from the folder name by default. If you need the project name to be different from the folder name, it can be set in the projects `settings.gradle`.\n\n```groovy\n//in settings.gradle\n\ninclude ':thelibrary'\nproject(':thelibrary').name = \"alibrary\"\n```\n\n\n## Contributing\n\nWe love contributions, but make sure to checkout `CONTRIBUTING.MD` first!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrademe%2Fincludeme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrademe%2Fincludeme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrademe%2Fincludeme/lists"}