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.properties
No 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.gradle
En
gradle.properties
su directorio de inicio de usuario, ponga:También asegúrese de que
GRADLE_USER_HOME
esté configurado para que, de lo~/.gradle
contrario, 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-publish
complemento mientras que la pregunta está usando elmaven
complemento.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
-g
opció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.properties
gradle-local.properties
(esto debe ignorarse).Esto es mejor que anular el uso
$USER_HOME/.gradle/gradle.properties
porque diferentes proyectos pueden tener los mismos nombres de propiedad.fuente
build.gradle
. ¿Cómo usar las credenciales en lauploadArchives
configuració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