Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using gradle project variable in buildscript scope

Tags:

gradle

There is a similar question here Access project extra properties in buildscript closure

but i found a "workaround" which does not look like the optimum

I have a multi gradle project - im declaring the repository in the main gradle file using

subprojects {
 repostiories {
    maven {..}
  }
}

now i also have to set these for the build script because im using a plugin !

so again buildscript { repositories ...

Now instead of pasting the URLs twice i wanted to use a property - as i figured project.ext properties are not set during the buildscript stage thus i put them in my gradle.settings file

i couldnt set rootProject.ext.xx settings so i had to use

gradle.ext {
 mavenURLs =  [ companyURL1, companyURL2 ... etc]
}

Now i could use gradle.ext.mavenURLs in my build.gradle file

Is there a better way ? Is there a way to set the buildscript and dependency repositories for all project in one block without repeating once for buildscript and once for the dependency ?

like image 560
Steve Avatar asked Jul 04 '26 20:07

Steve


1 Answers

def repoClosure = { RepositoryHandler repoHandler ->
    repoHandler.mavenLocal()
    repoHandler.mavenCentral()
    ['http://mycompany/repo1', 'http://mycompany/repo2'].each { mavenURL ->
        repoHandler.maven {
            url mavenURL
            credentials {
                username 'foo'
                password 'bar'
            }
        }
    }
}
project.with {
    allprojects {
        repoClosure(buildscript.repositories)
        repoClosure(repositories)
    }
}
like image 82
lance-java Avatar answered Jul 07 '26 15:07

lance-java



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!