web-dev-qa-db-fra.com

Le fichier ~/.gradle/gradle.properties n'est pas en cours de lecture

Il y a une question similaire ici: Les propriétés de Gradle ne sont pas lues dans ~/.gradle/gradle.properties mais cela ne résout pas mon problème.

Il me semble que gradle ne lit pas mon fichier ~/.gradle/gradle.properties.

J'ai un fichier gradle.properties dans ~/.gradle, et il a les propriétés nécessaires pour signer les artefacts avant le téléchargement sur maven central. Cela ressemble à ceci:

signing.keyId=12345678
signing.password=myPassword
signing.secretKeyRingFile=/home/me/.gnupg/secring.gpg

sonatypeUsername=me
sonatypePassword=myOtherPassword

Lorsque j'essaie de construire mon projet, il se plaint de l'absence de propriété sonatypeUsername, ainsi:

> Could not find property 'sonatypeUsername' on root project 'yourProject'.

Voici la partie pertinente du build.gradle de mon projet:

uploadArchives {
    repositories {
        mavenDeployer {

            // lots of non-interesting things here

            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: project.property("sonatypeUsername"), password: project.property("sonatypePassword"))
            }
        }
    }
}

Lorsque j'essaie de construire le projet avec le débogage, voici ce que je vois concernant les propriétés:

$ ./gradlew --stacktrace --debug build

[INFO] [o.g.BuildLogger] Starting Build
[DEBUG] [o.g.BuildLogger] Gradle user home: /home/me
[DEBUG] [o.g.BuildLogger] Current dir: /home/me/dev/yourProject
[DEBUG] [o.g.BuildLogger] Settings file: null
[DEBUG] [o.g.BuildLogger] Build file: null
[DEBUG] [o.g.i.b.BuildSourceBuilder] Starting to build the build sources.
[DEBUG] [o.g.i.b.BuildSourceBuilder] Gradle source dir does not exist. We leave.
[DEBUG] [o.g.i.DefaultGradlePropertiesLoader] Found env project properties: []
[DEBUG] [o.g.i.DefaultGradlePropertiesLoader] Found system project properties: []
[DEBUG] [o.g.a.i.a.m.DefaultLocalMavenRepositoryLocator] No local repository in Settings file defined. Using default path: /home/me/.m2/repository
[DEBUG] [o.g.i.ScriptEvaluatingSettingsProcessor] Timing: Processing settings took: 0.286 secs
[INFO] [o.g.BuildLogger] Settings evaluated using empty settings script.
[DEBUG] [o.g.i.ProjectPropertySettingBuildLoader] Looking for project properties from: /home/me/dev/yourProject/gradle.properties
[DEBUG] [o.g.i.ProjectPropertySettingBuildLoader] project property file does not exists. We continue!
[INFO] [o.g.BuildLogger] Projects loaded. Root project using build file '/home/me/dev/yourProject/build.gradle'.
18
John Ruiz

Le problème était que j'ai supposé que ce n'était pas vrai. Si vous regardez la section 14.2 de la documentation de gradle , elle dit:

Vous pouvez placer un fichier gradle.properties dans le répertoire de base de l'utilisateur Gradle (défini par la variable d'environnement «GRADLE_USER_HOME», qui, s'il n'est pas défini par défaut, est USER_HOME/.gradle) ou dans votre répertoire de projet.

Mon hypothèse incorrecte était que USER_HOME venait de passer par défaut à la variable d'environnement linux HOME standard. Ce n'est pas vrai.

Dès que je export USER_HOME=$HOME dans mon ~/.bashrc tout fonctionne

15
John Ruiz

Une solution simple et rapide consiste simplement à placer le fichier gradle.properties juste à côté de votre build.gradle, ce qui garantira sa lecture. Je réalise que cela ne résout pas une seule source centralisée de propriétés communes, mais au moins c'est quelque chose. 

2
WillBD

Par défaut, sans configurer GRADLE_USER_HOME, cela devrait fonctionner. Je l'ai testé dans v3.5

Mais assurez-vous que vous l'utilisez en tant que bon utilisateur. Par exemple, si vous faites votre ./gradlew build en utilisant Sudo, alors gradle.properties dans votre dossier de départ ne sera pas récupéré.

Pour vous assurer que le répertoire utilisateur par défautgradle, vous pouvez exécuter gradle avec l'option --debug et rechercher la ligne ci-dessous,

[DEBUG] [org.gradle.internal.buildevents.BuildLogger] Accueil de l'utilisateur de Gradle: 

0
Kannan Ramamoorthy