gradle-maven-settings-plugin
gradle-maven-settings-plugin copied to clipboard
Apply maven settings also to buildscript repositories
It would be great to have ability to apply repository credentials (stored in settings.xml in encrypted form) also to repositories specified in buildscript block.
As far as I understand this could be done by means of gradle init scripts, for which Plugin<Gradle>
could be written.
I have been trying to write an initscript to do this and am not having any luck.
Here is the init.gradle:
initscript {
repositories {
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
classpath 'net.linguica.gradle:maven-settings-plugin:0.5'
}
}
allprojects {
apply plugin: net.linguica.gradle.maven.settings.MavenSettingsPlugin
}
And here is the buildscript block of my build.gradle:
buildscript {
repositories {
maven {
name = "central"
url "<url_of_repo_maven_repo>"
}
}
dependencies {
classpath "<classpath_of_dependency>"
}
}
The credentials are not being applied to the repository that I've specified in the buildscript block. Any help would be appreciated.
If it's only for credentials you can do like this,
init.gradle:
import net.linguica.gradle.maven.settings.LocalMavenSettingsLoader
import net.linguica.gradle.maven.settings.MavenSettingsPlugin
import net.linguica.gradle.maven.settings.MavenSettingsPluginExtension
initscript {
repositories {
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
classpath 'net.linguica.gradle:maven-settings-plugin:0.5'
}
}
allprojects {
apply plugin: MavenSettingsPlugin
def settings = new LocalMavenSettingsLoader(new MavenSettingsPluginExtension(project)).loadSettings()
project.apply {
buildscript.repositories.all { repo ->
if (repo instanceof MavenArtifactRepository) {
def server = settings.servers.find { it.id == repo.name }
repo.credentials.username = server?.username
repo.credentials.password = server?.password
}
}
}
}
Is it also possible to apply credentials for pluginManagement in init.gradle
in a similar fashion?
i.e. replace hard-wiring of credentials in: -
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
gradlePluginPortal()
maven {
name 'nexus'
url "..."
credentials {
username '*****'
password '*****'
}
}
}
}
}
Never tried it myself but it should be possible. Just try debugging different variations by using command line option on your IDE.