Janitha Madushan
Janitha Madushan

Reputation: 1543

How to use init.gradle to provide plugin repositories for plugins configured in the settings.gradle

I have configured a Gradle plugin in settings.gradle file as follows,

buildscript {
  dependencies {
    classpath "org.test.group:gradleplugins:${pluginVersion}"
    ...
  }
}

apply plugin: 'org.test.group:gradleplugins'
....

and I am trying to provide artifacts repository using init.gradle as follows,

initscript {
    repositories {
        maven { url "https://test.repo/gradleplugins" }
        ...
    }
}

also, I have provided init.gradle file to the build task using,

.... -i -I ./init.gradle'

but the build still gets a dependency resolution error as follows,

Cannot resolve external dependency org.test.group:gradleplugins:1.0.0-SNAPSHOT because no repositories are defined.

Upvotes: 1

Views: 5774

Answers (2)

Janitha Madushan
Janitha Madushan

Reputation: 1543

It could be done either way by writing Gradle plugin in the init.gradle file as following,

apply plugin: EnterpriseRepositoryPlugin

class EnterpriseRepositoryPlugin implements Plugin<Gradle> {

    void apply(Gradle gradle) {
        gradle.settingsEvaluated { settings ->
            settings.pluginManagement {
                repositories {
                    maven { url "https://repo.org/gradleplugins" }
                    maven { url "https://repo.org/maven" }
                }    
            }
        }
    }
}

according to Gradle documentation, https://docs.gradle.org/current/userguide/init_scripts.html

Upvotes: 2

Martin Zeitler
Martin Zeitler

Reputation: 76639

The init.gradle has another purpose (and that file is being automatically detected).

void settingsEvaluated​(Settings settings) might be to only chance to manipulate these settings (but the question does not provide the least valid reason to do so, with only one repository). It rather seems that you're unnecessarily over-complicating things, where there otherwise would be no problem. And this doesn't belong into the settings.gradle either (which also has another purpose). Just add the plugin repositories into the buildscript block of the root project's build.gradle, where they belong. The userguide shows how it should look alike, when defining the plugin repositories statically.

Upvotes: -1

Related Questions