{"id":16351386,"url":"https://github.com/autonomousapps/gradle-glossary","last_synced_at":"2025-06-17T03:03:21.407Z","repository":{"id":43083364,"uuid":"425406927","full_name":"autonomousapps/gradle-glossary","owner":"autonomousapps","description":"Glossary of Gradle terms both common and uncommon","archived":false,"fork":false,"pushed_at":"2024-03-04T20:54:31.000Z","size":29,"stargazers_count":126,"open_issues_count":2,"forks_count":5,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-06-17T03:02:51.279Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"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/autonomousapps.png","metadata":{"files":{"readme":"README.asciidoc","changelog":null,"contributing":"CONTRIBUTING","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":"2021-11-07T03:52:46.000Z","updated_at":"2025-03-10T08:00:50.000Z","dependencies_parsed_at":"2024-11-07T15:01:07.082Z","dependency_job_id":null,"html_url":"https://github.com/autonomousapps/gradle-glossary","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/autonomousapps/gradle-glossary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousapps%2Fgradle-glossary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousapps%2Fgradle-glossary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousapps%2Fgradle-glossary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousapps%2Fgradle-glossary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autonomousapps","download_url":"https://codeload.github.com/autonomousapps/gradle-glossary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousapps%2Fgradle-glossary/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260281568,"owners_count":22985626,"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-11T01:09:19.012Z","updated_at":"2025-06-17T03:03:21.366Z","avatar_url":"https://github.com/autonomousapps.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"== Glossary of Gradle terms\n\n[[artifact]]\n=== Artifact\n'Artifact' is usually used in the context of publishing to designate a file whose name has a 'classifier' and 'extension'. Two artifacts in a \u003c\u003cpublication\u003e\u003e cannot have the same classifier and extension. \n\nConfusingly, when used in the context of \u003c\u003cmaven-publication-format, Maven coordinates\u003e\u003e, an artifactId refers to a list of the above artifacts. For an example, the `okhttp` artifactId contains jar, sources and javadocs artifacts.\n\n[[build]]\n=== Build\nA 'build' is the aggregate of the atomic pieces of work performed by Gradle. A build is made up of \u003c\u003cproject,projects\u003e\u003e and those projects have a collection of \u003c\u003ctask, tasks\u003e\u003e. A build usually has an outcome of SUCCESS or FAILURE. You can run a build using the `gradle` or `gradlew` commands. \n\n[[build-script]]\n=== Build script\nA `build.gradle` script. The existence of a build script, along with an entry in the\n\u003c\u003csettings-script,settings script\u003e\u003e (other than for the root build script, which requires no entry), \nis what defines a Gradle \u003c\u003cmodule,module\u003e\u003e.\n\n[[configuration]]\n=== Configuration\nA https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.Configuration.html[Configuration], at\nthe most basic level, is a bucket of dependencies. The most common configurations, which most people\nwould have seen, are `api` and `implementation`. A great place to learn more about configurations\nis the documentation for the https://docs.gradle.org/current/userguide/java_library_plugin.html[java-library]\nplugin.\n\nWhile the usage as a bucket of dependencies is the most common for Gradle users, configurations can\nalso https://docs.gradle.org/current/userguide/declaring_dependencies.html#sec:resolvable-consumable-configs[be used in other ways]\nby plugin authors:\n\n- as a https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileCollection.html[FileCollection]\nas an input to tasks (e.g. `runtimeClasspath`).\n- as an outgoing https://docs.gradle.org/current/userguide/variant_model.html#understanding-variant-selection[variant]\nto be later https://docs.gradle.org/current/userguide/publishing_customization.html#sec:publishing-custom-components[published]\n(e.g. `apiElements`)\n\nThe word \"configuration\" is one of the most overloaded in the Gradle world.\nSee also \u003c\u003cconfiguration-phase,configuration phase\u003e\u003e.\n\n[[configuration-phase]]\n=== Configuration phase\nA Gradle build is composed of two primary phases, the configuration phase (not to be confused with \n\u003c\u003cconfiguration\u003e\u003e instances) and the \u003c\u003cexecution-phase,execution phase\u003e\u003e. The configuration phase \nhappens first and is single-threaded.\n\n[[convention-plugin]]\n=== Convention plugin\nA \u003c\u003cplugin\u003e\u003e built on top of an \u003c\u003cecosystem-plugin,ecosystem plugin\u003e\u003e, and which applies common\n_conventions_ to the build script that uses the plugin.\n\nSee also https://developer.squareup.com/blog/herding-elephants/[Herding elephants: Wrangling a 3,500-module Gradle project].\n\n[[ecosystem-plugin]]\n=== Ecosystem plugin\nA \u003c\u003cplugin\u003e\u003e responsible for building a language, such as Java (`java` and `java-library`), Groovy,\nScala, Android, Kotlin, etc. Many plugins are maintained by \u003c\u003cgradle,Gradle\u003e\u003e itself, and are \npart of the Gradle distribution.\n\n[[execution-phase]]\n=== Execution phase\nThe second primary phase of a Gradle build, the execution phase happens after the\n\u003c\u003cconfiguration-phase,configuration phase\u003e\u003e is complete. This is where all \u003c\u003ctask,tasks\u003e\u003e actions are\nexecuted. This phase has multiple levels of parallelism.\n\n[[gradle]]\n=== Gradle\nhttps://gradle.org/[Gradle] is the open-source build system developed and maintained by https://gradle.com/[Gradle, Inc.],\na for-profit company.\n\n[[init-script]]\n=== Init script\nAn init, or https://docs.gradle.org/current/userguide/init_scripts.html[initialization script], is\nbacked by an instance of the https://docs.gradle.org/current/javadoc/org/gradle/api/invocation/Gradle.html[`Gradle` type].\n\nSee also \u003c\u003cplugin,Plugin\u003e\u003e.\n\n[[maven-build-tool]]\n=== Maven (build tool)\nhttps://maven.apache.org/[Maven] is a build tool like Gradle but using a more declarative syntax based on XML. \nFor publishing dependencies, Maven uses the \u003c\u003cmaven-publication-format, Maven publication format\u003e\u003e.\n\n[[maven-publication-format]]\n=== Maven (publication format)\nThe Maven publication format is the format used by most of the JVM ecosystem to publish and consume binary dependencies.\nEach dependency is identified by a `\"$group:$artifact:$version` string called \"Maven coordinates\". These dependencies\ncan then be consumed by accessing files (by HTTP or on the local filesystem) at `$root/$group/$version/`. For an example, the files for `com.squareup.okhttp3:okhttp:4.9.3` are available at https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/4.9.3/\n\nWhile originally made for the \u003c\u003cmaven-build-tool, Maven build tool\u003e\u003e, Gradle also supports the Maven publication format. In order to provide \nmore flexibility, Gradle also introduced https://docs.gradle.org/current/userguide/publishing_gradle_module_metadata.html[Gradle module metadata]\nto provide more information about the dependencies than a regular https://maven.apache.org/guides/introduction/introduction-to-the-pom.html[pom file]\n\n[[maven-central]]\n=== MavenCentral\nhttps://search.maven.org/[MavenCentral] is the main repository that hosts \u003c\u003cmaven-publication-format, Maven publications\u003e\u003e. It is operated by a \ncompany named https://www.sonatype.com/[Sonatype] and is the default repository for a lot of the ecosystem.\nOther repositories exists like (now defunct) https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/[jcenter] or the https://maven.google.com/web/index.html[Google Maven repository].\n\n[[module]]\n=== Module\nAn informal term for a \u003c\u003cproject\u003e\u003e, but more common than the formal term. A module is a \nsource code-containing directory, more or less independent of other modules in the same multi-module\n(or multi-project) project.\n\nThis is one of the other very heavily overloaded terms in the Gradle world. See also \u003c\u003cproject,Project\u003e\u003e.\n\n[[plugin]]\n=== Plugin\nGradle is built on a plugin system. Gradle itself is primarily composed of infrastructure, such as\na sophisticated dependency resolution engine, common to all project types. The rest of its\nfunctionality comes from plugins, including \"core\" plugins distributed with \u003c\u003cgradle,Gradle\u003e\u003e itself,\nthird-party plugins, and \u003c\u003cscript-plugin,script plugins\u003e\u003e in a given build.\n\nThere are three _kinds_ of plugin, based on the context in which they are applied:\n\n. Project plugins that implement `Plugin\u003cProject\u003e`, applied in \u003c\u003cbuild-script,build scripts\u003e\u003e.\n. Settings plugins that implement `Plugin\u003cSettings\u003e`, applied in \u003c\u003csettings-script,settings scripts\u003e\u003e.\n. Init (Gradle) plugins that implement `Plugin\u003cGradle\u003e`, applied in \u003c\u003cinit-script,init scripts\u003e\u003e.\n\nPlugins may be _implemented_ as so-called binary plugins (that is, by explicitly implementing one of the\nspecific generic interfaces described above), or as \u003c\u003cprecompiled-script-plugin,precompiled script plugins\u003e\u003e.\nThis distinction is merely an implementation detail.\n\ncf. \u003c\u003cscript-plugin,script plugins\u003e\u003e.\n\n[[precompiled-script-plugin]]\n=== Precompiled script plugin\nEquivalent to a \u003c\u003cplugin,plugin\u003e\u003e, but written such that it looks like a build script, \nhttps://docs.gradle.org/current/userguide/custom_plugins.html#sec:precompiled_plugins[precompiled script plugins]\ncan be written in Groovy or Kotlin by applying the `'groovy-gradle-plugin'` or `kotlin-dsl` plugin,\nrespectively. \n\n[[project]]\n=== Project\nOften referred to as a \"module\", every Gradle project is backed by a \nhttps://docs.gradle.org/current/javadoc/org/gradle/api/Project.html[Project] instance, hence the name.\nThe most common type of \u003c\u003cplugin\u003e\u003e is a project plugin. Most Gradle projects are composed of many\nprojects (sometimes called \"subprojects\").\n\n[[publication]]\n=== Publication\nA Gradle https://docs.gradle.org/current/javadoc/org/gradle/api/publish/Publication.html[Publication] is a list of\n\u003c\u003cartifact, artifacts\u003e\u003e, and possibly associated metadata. Most of the times, you will deal with https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html[MavenPublications] to publish in the \n\u003c\u003cmaven-publication-format, Maven publication format\u003e\u003e with the https://docs.gradle.org/current/userguide/publishing_maven.html[`maven-publish`] plugin\n\n[[script-plugin]]\n=== Script plugin\nA gradle script that can be applied to other gradle scripts, including \u003c\u003cbuild-script,build scripts\u003e\u003e,\n\u003c\u003csettings-script,settings scripts\u003e\u003e, and \u003c\u003cinit-script,init scripts\u003e\u003e. Can be written in Groovy or\nKotlin, and are applied to other scripts via \nhttps://docs.gradle.org/current/javadoc/org/gradle/api/plugins/PluginAware.html#apply-java.util.Map-[PluginAware.apply]. \nFor example, `apply from: 'complicated_thing.gradle'`. Depending on the type of script they are \napplied to, they're backed by either a \u003c\u003cproject,Project\u003e\u003e instance, a \u003c\u003csettings-script,Settings\u003e\u003e instance,\nor a \u003c\u003cinit-script,Gradle\u003e\u003e instance.\n\n[[settings-script]]\n=== Settings script\nA `settings.gradle` script. A https://docs.gradle.org/current/javadoc/org/gradle/api/initialization/Settings.html[settings script]\nhas a large number of responsibilities, but one of the most important is declaring the set of \u003c\u003cproject,projects\u003e\u003e\nthat are part of the build, via `include ':project1'` and so on.\n\n[[software-component]]\n=== SoftwareComponent\nA https://docs.gradle.org/current/javadoc/org/gradle/api/component/SoftwareComponent.html[SoftwareComponent] is a list of artifacts\nbuilt by Gradle. It's a relatively recent API used to connect \u003c\u003cconfiguration, outgoing configurations\u003e\u003e and \u003c\u003cpublication, publications\u003e\u003e. Most of the times, you will\nuse already existing components such as `java` or the https://proandroiddev.com/android-library-distribution-with-maven-publish-28ac59b8ecb8[android ones]\nto configure your maven publications. If you're a plugin author, you will most likely deal with https://docs.gradle.org/current/javadoc/org/gradle/api/component/AdhocComponentWithVariants.html[AdhocComponentWithVariants]\n\n[[task]]\n=== Task\nEach \u003c\u003cproject,projects\u003e\u003e is made up of one or more tasks. Each task ought to be atomic (but often isn't), with inputs and outputs. Gradle executes tasks to perform its work. Task examples include: compiling source code, creating artifacts (such as jars or apks), generating Javadoc, running static analysis (e.g. lint), deleting temporary files, or publishing to a repository, etc. When a https://docs.gradle.org/current/userguide/more_about_tasks.html[Gradle task] is asked to run we can see the outcome of the task. This will be one of EXECUTED, SKIPPED, FAILED, FROM-CACHE, UP-TO-DATE, NO-SOURCE or _blank_ (meaning executed). \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomousapps%2Fgradle-glossary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautonomousapps%2Fgradle-glossary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomousapps%2Fgradle-glossary/lists"}