J'essaie de déployer un artefact construit par Gradle dans un repo Maven, et je dois spécifier des informations d'identification pour cela. Cela fonctionne bien pour le moment:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://.../nexus/content/repositories/snapshots/") {
authentication(userName: "admin", password: "admin123")
}
}
}
}
Mais je n'aime pas avoir à stocker les informations d'identification dans le contrôle de code source. Avec Maven, je définirais une configuration de serveur et attribuerais des informations d'identification dans mon ~/.m2/settings.xml
. Comment faire quelque chose de similaire avec Gradle?
Réponses:
~ / .gradle / gradle.properties :
build.gradle :
la source
gradle.properties
pas être enregistré àVCS
?La première réponse est toujours valable, mais l'API a changé dans le passé. Comme ma modification n'a pas été acceptée, je la poste comme réponse séparée.
La méthode
authentication()
n'est utilisée que pour fournir la méthode d'authentification (par exemple, de base) mais pas les informations d'identification.Vous ne devriez pas non plus l'utiliser car il imprime les informations d'identification en cas d'échec!
C'est à quoi ça devrait ressembler dans votre
build.gradle
Dans
gradle.properties
votre répertoire userhome, mettez:Assurez-vous également que le
GRADLE_USER_HOME
est défini sur,~/.gradle
sinon le fichier de propriétés ne sera pas résolu.Voir également:
https://docs.gradle.org/current/userguide/build_environment.html
et
https://docs.gradle.org/current/userguide/dependency_management.html (23.6.4.1)
la source
maven-publish
plugin tandis que la question utilise lemaven
plugin.Vous pouvez également fournir des variables sur la ligne de commande avec
-PmavenUser=user -PmavenPassword=password
.Cela peut être utile, vous ne pouvez pas utiliser un fichier gradle.properties pour une raison quelconque. Par exemple, sur un serveur de build, nous utilisons Gradle avec l'
-g
option pour que chaque plan de build ait le sienGRADLE_HOME
.la source
Si vous avez des informations d'identification spécifiques à l'utilisateur (c'est-à-dire que chaque développeur peut avoir un nom d'utilisateur / mot de passe différent), je vous recommande d'utiliser le plugin gradle-properties-plugin .
gradle.properties
gradle-local.properties
(cela doit être git ignoré).C'est mieux que de remplacer l'utilisation
$USER_HOME/.gradle/gradle.properties
car différents projets peuvent avoir les mêmes noms de propriété.la source
build.gradle
. Comment utiliser les informations d'identification dans lauploadArchives
configuration?Vous pouvez mettre les informations d'identification dans un fichier de propriétés et le lire en utilisant quelque chose comme ceci:
Une autre approche consiste à définir les variables d'environnement au niveau du système d'exploitation et à les lire en utilisant:
la source
Pour ceux d'entre vous qui construisent sur un MacOS et n'aiment pas laisser votre mot de passe en texte clair sur votre ordinateur, vous pouvez utiliser l'outil de trousseau pour stocker les informations d'identification, puis les injecter dans la construction. Les crédits vont à Viktor Eriksson. https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/
la source