Friday, February 2, 2018

Gradle buildscript dependencies vs core dependencies

buildscript dependencies:
buildscript {
    repositories {
        maven { url("https://plugins.gradle.org/m2/") }
    }

    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
        classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
    }
}
root level/core dependencies:
repositories{
    mavenLocal()
    maven { url("https://plugins.gradle.org/m2/") }
    maven { url "https://repo.spring.io/snapshot" }
}

dependencies {
        //Groovy
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'

        //Spock Test
        compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'

        //Test
        testCompile group: 'junit', name: 'junit', version: '4.10'
        testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}
So, First I want to clarify in single word that
i) buildscript dependencies jar file will be downloaded from buildscript repositories.[Project external dependency]
ii) root level dependencies jar file will be downloaded from root level repositories.[For project dependency]
Here,
The “buildscript” block only controls dependencies for the buildscript process itself, not for the application code. As various gradle plugin like,gradle-cobertura-plugingradle-lint-plugin are found from buildscript repos. Those plugins would not be referenced as dependencies for the application code.
But for project compilation and test running jar files like groovy all jar, junit and testng jar will be found from root level repositories.
And another thing, the maven { url("https://plugins.gradle.org/m2/") }portion can be used in both blocks. Because they are used for different dependencies.

No comments:

Post a Comment