tutorial traduccion mac gradle

traduccion - ¿Dónde poner la configuración de Gradle(es decir, credenciales) que no se debe comprometer?



gradle vs maven (5)

Estoy intentando implementar un artefacto construido en 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 fuente. Con Maven, definiría una configuración de servidor y ~/.m2/settings.xml credenciales en mi ~/.m2/settings.xml . ¿Cómo hago algo similar con Gradle?


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 separada.

La authentication() método authentication() solo se usa para proporcionar el método de autenticación (por ejemplo, básico) pero no las credenciales.

¡Tampoco debería usarlo ya que está imprimiendo las credenciales en caso de falla!

Así es como debería verse en tu build.gradle

maven { credentials { username "$mavenUser" password "$mavenPassword" } url ''https://maven.yourcorp.net/'' }

En gradle.properties en su dir de inicio de usuario:

mavenUser=admin mavenPassword=admin123

Asegúrese también de que GRADLE_USER_HOME esté establecido en ~/.gradle contrario, el archivo de propiedades no se resolverá.

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)


Puede poner las credenciales en un archivo de propiedades y leerlo usando algo como esto:

Properties props = new Properties() props.load(new FileInputStream("yourPath/credentials.properties")) project.setProperty(''props'', props)

Otro enfoque es definir variables de entorno en el nivel del sistema operativo y leerlas usando:

System.getenv()[''YOUR_ENV_VARIABLE'']


Si tiene credenciales específicas del usuario (es decir, cada desarrollador puede tener un nombre de usuario / contraseña diferente), le recomendaría usar el gradle-properties-plugin .

  1. Poner los valores predeterminados en gradle.properties
  2. Cada desarrollador sobrescribe con gradle-local.properties (esto debe ser ignorado).

Es mejor que invalidar el uso de $USER_HOME/.gradle/grade.properties porque diferentes proyectos pueden tener los mismos nombres de propiedad.


También podría suministrar variables en la línea de comando con -PmavenUser=user -PmavenPassword=password .

Esto podría ser útil; no puede usar un archivo gradle.properties por algún motivo. Por ejemplo, en un servidor de compilación, estamos utilizando Gradle con la opción -g para que cada plan de compilación tenga su propio GRADLE_HOME .


~ / .gradle / gradle.properties :

mavenUser=admin mavenPassword=admin123

build.gradle :

... authentication(userName: mavenUser, password: mavenPassword)