We have a few projects that we publish to a local Nexus server, and I have some questions/confusion about what the best way to store credentials are. Some background on the specific problem I’m trying to solve:
- We don’t have a central login, all devs have their own Nexus credentials
- We currently ask that all developers store their credentials in ~/.gradle/gradle.properties and access them that way
- Most developers don’t ever publish to Maven and so shouldn’t care about this, but
- They have to care, because during Configuration the build will fail if the requested properties don’t exist
There’s nothing fancy about our “publishing” closure:
publishing {
publications {
mavenJava(MavenPublication) {
groupId 'foo.bar'
artifactId "baz"
version "$version"
from components.java
artifact sourceJar {
classifier "sources"
}
}
}
repositories {
maven {
credentials {
username "${nexus_username}"
password "${nexus_password}"
}
url "***"
}
}
}
Basically I would like a way to integrate per-user credentials while also not requiring the credentials exist unless a “publish” task is explicitly requested. Is there a nice, clean way to handle this? I’m aware of on-demand configuration but I believe this operates at the build file level and not the task level, correct?