title: plugin request for plugin already on the classpath must not include a version
body: <p>I've done web search for "plugin request for plugin already on the classpath must not include a version site:stackoverflow.com" and found nothing that particular. Search for "plugin request for plugin already on the classpath must not include a version" (w/out SO) found:
  <a href="https://discuss.gradle.org/t/error-plugin-already-on-the-classpath-must-not-include-a-version/31814" rel="noreferrer">https://discuss.gradle.org/t/error-plugin-already-on-the-classpath-must-not-include-a-version/31814</a> where I've read in answers e.g.:</p>
  
  <blockquote>
    <p>I didn’t find any reference to this use case in Grade plugins
    documentation.</p>
  </blockquote>
  
  <p>The error </p>
  
  <blockquote>
    <p>Build file '/Users/username/github/OpCon/app/build.gradle'
    line: 4 Error resolving plugin [id: 'com.android.application',
    version: '3.4.1']</p>
    
    <blockquote>
      <p>Plugin request for plugin already on the classpath must not include a version</p>
    </blockquote>
  </blockquote>
  
  <p>appears in <code>IntelliJ IDEA</code>, build.gradle (OpCon):</p>
  
  <pre><code>buildscript {
      repositories {
          jcenter()
          maven {
              url 'https://maven.google.com/'
              name 'Google'
          }
          google()
      }
      dependencies {
          classpath 'com.android.tools.build:gradle:3.5.2'
          // NOTE: Do not place your application dependencies here; they belong
          // in the individual module build.gradle files
      }
  }
  
  allprojects {
      repositories {
          mavenCentral()
          maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
      }
      repositories {
          jcenter()
          maven {
              url 'https://maven.google.com/'
              name 'Google'
          }
      }
  }
  task clean(type: Delete) {
      delete rootProject.buildDir
  }
  </code></pre>
  
  <p><code>app/build.gradle</code>:</p>
  
  <pre><code>plugins {
      id 'com.android.application' version '3.4.1' apply true
  }
  
  ... and then other stuff
  </code></pre>
  
  <p>I don't understand, classpath 'com.android.tools.build:gradle:3.5.2' does not seem to include 'com.android.application'...
  "classpath" has only one occurrence if searched in the project.</p>
  
  <p>ADDED:  </p>
  
  <p>Interestingly on <a href="https://maven.google.com/web/index.html" rel="noreferrer">https://maven.google.com/web/index.html</a> I can find 'com.android.tools.build:gradle:3.5.2' but no 'com.android.application' branch.</p>
  
  <p>ADDED 2:
  I've downloaded (quite many files actually was downloaded for some reason) by command taken from here <a href="https://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact-in-one-command-line">How can I download a specific Maven artifact in one command line?</a>:  </p>
  
  <p><code>mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DrepoUrl='https://maven.google.com/' -Dartifact='com.android.tools.build:gradle:3.4.1'</code> </p>
  
  <p>found path <code>com.android.tools.build:gradle</code> in file manager and looked inside only jar there:</p>
  
  <pre><code>username$ jar tvf /Users/username/.m2/repository/com/android/tools/build/gradle/3.4.1/gradle-3.4.1.jar | grep application
    1115 Wed May 01 20:30:18 MSK 2019 com/android/build/gradle/internal/tasks/ApplicationIdWriterTask$applicationIdSupplier$1.class
      55 Wed May 01 20:29:18 MSK 2019 META-INF/gradle-plugins/com.android.application.properties
  </code></pre>
  
  <p>So there is a mention <code>gradle plugin</code> <code>com.android.application</code> in jar <code>META-INF</code>.  </p>
  
  <p>File <code>com.android.application.properties</code> is one liner: <code>implementation-class=com.android.build.gradle.AppPlugin</code>.  </p>
  
  <p>Web search for "implementation class java" finds info on interfaces. In wiki <a href="https://en.wikipedia.org/wiki/Interface_(Java)" rel="noreferrer">https://en.wikipedia.org/wiki/Interface_(Java)</a>: </p>
  
  <blockquote>
    <p>An interface in the Java programming language is an abstract type that
    is used to specify a behavior that classes must implement.</p>
  </blockquote>
  
  <p>So gradle plugin could be an interface? How can I dig in further?</p>