Estoy tratando de implementar un artefacto construido por Gradle en un repositorio de Maven, y necesito especificar las credenciales para eso. Esto funciona bien por ahora:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://.../nexus/content/repositories/snapshots/") {
authentication(userName: "admin", password: "admin123")
}
}
}
}
Pero no me gusta tener que almacenar las credenciales en el control de código fuente. Con Maven, definiría una configuración de servidor y asignaría credenciales en mi ~/.m2/settings.xml. ¿Cómo hago algo similar con Gradle?

Respuestas:
~ / .gradle / gradle.properties :
build.gradle :
fuente
gradle.propertiesNo debe registrarse enVCS?La primera respuesta sigue siendo válida, pero la API ha cambiado en el pasado. Como mi edición no fue aceptada, la publico como respuesta por separado.
El método
authentication()solo se utiliza para proporcionar el método de autenticación (por ejemplo, Básico) pero no ninguna credencial.¡Tampoco deberías usarlo ya que está imprimiendo las credenciales en caso de falla!
Así es como debería verse en tu
build.gradleEn
gradle.propertiessu directorio de inicio de usuario, ponga:También asegúrese de que
GRADLE_USER_HOMEesté configurado para que, de lo~/.gradlecontrario, el archivo de propiedades no se resuelva.Ver también:
https://docs.gradle.org/current/userguide/build_environment.html
y
https://docs.gradle.org/current/userguide/dependency_management.html (23.6.4.1)
fuente
maven-publishcomplemento mientras que la pregunta está usando elmavencomplemento.También puede proporcionar variables en la línea de comando con
-PmavenUser=user -PmavenPassword=password.Esto puede ser útil si no puede usar un archivo gradle.properties por alguna razón. Por ejemplo, en un servidor de compilación, estamos usando Gradle con la
-gopción para que cada plan de compilación tenga el suyoGRADLE_HOME.fuente
Si tiene credenciales específicas de usuario (es decir, cada desarrollador puede tener un nombre de usuario / contraseña diferente), entonces recomendaría usar el complemento gradle-properties .
gradle.propertiesgradle-local.properties(esto debe ignorarse).Esto es mejor que anular el uso
$USER_HOME/.gradle/gradle.propertiesporque diferentes proyectos pueden tener los mismos nombres de propiedad.fuente
build.gradle. ¿Cómo usar las credenciales en lauploadArchivesconfiguración?Puede poner las credenciales en un archivo de propiedades y leerlo usando algo como esto:
Otro enfoque es definir variables de entorno a nivel del sistema operativo y leerlas usando:
fuente
Para aquellos de ustedes que están construyendo en un MacOS, y no les gusta dejar su contraseña en texto claro en su máquina, pueden usar la herramienta de llavero para almacenar las credenciales y luego inyectarla en la compilación. Los créditos van a Viktor Eriksson. https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/
fuente