2015-02-03 3 views
11

Здесь есть аналогичный вопрос: Gradle properties not being read from ~/.gradle/gradle.properties, но это не решает мою проблему.~/.gradle/gradle.properties файл не читается

Мне кажется, что град НЕ читает мой файл ~/.gradle/gradle.properties.

У меня есть файл gradle.properties в ~/.gradle, и у него есть свойства, необходимые для подписи артефактов перед загрузкой в ​​maven central. Это выглядит следующим образом:

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

sonatypeUsername=me 
sonatypePassword=myOtherPassword 

Когда я пытаюсь построить мой проект, он жалуется на то, что нет никакой собственности sonatypeUsername, таким образом:

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

Вот соответствующая часть build.gradle моего проекта:

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")) 
      } 
     } 
    } 
} 

Когда я пытаюсь построить проект с помощью отладки, вот что я вижу в отношении свойств:

$ ./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'. 
+1

'окр | grep GRADLE_USER_HOME' что-нибудь вернуть? –

+0

yes: GRADLE_USER_HOME =/home/me –

+0

Является ли каталог '.gradle' в'/home/me/.gradle/'? Другими словами, 'HOME' также'/home/me'? –

ответ

10

Проблема заключалась в том, что я сделал предположение, что это не так. Если вы посмотрите на section 14.2 of the gradle documentation, он говорит:

Вы можете поместить файл gradle.properties в домашней директории пользователя Gradle (определяется переменной окружения «GRADLE_USER_HOME», которая, если не установлены значения по умолчанию для USER_HOME/.gradle) или в вашем каталоге проекта.

Мой неправильно предположение, что USER_HOME только по умолчанию в стандартной переменной линукс HOME среды. Это неправда.

Как только я export USER_HOME=$HOME в моем ~/.bashrc все работает

+0

Интересно ... Интересно, действительно ли это намеренное поведение. Вы используете Linux? Довольно уверен, что я использовал только '$ HOME/.gradle' в прошлом без проблем. –

+0

Да, я использую Linux Mint. Это на самом деле становится страннее ...как только я смог успешно построить, я удалил инструкцию экспорта из моего ~/.bashrc и перезагрузился. Теперь, gradle успешно выполняет мой проект независимо от того, установлен ли USER_HOME. –

+0

После некоторого разговора с людьми с градием, я не знаю, почему это произошло со мной, но до сих пор мой ответ стоит. Вот разговор: http://forums.gradle.org/gradle/topics/-gradle-gradle-properties-file-not-being-read –

1

Быстрое и грязное решение просто для того, чтобы просто поставить gradle.properties прямо рядом с вашим build.gradle, что гарантирует его считывание. Я понимаю, что это не решает ни одного централизованного источника общих свойств, но, по крайней мере, это что-то.

+2

проблема заключается в том, что я не хочу, чтобы он был проверен в исходном элементе управления, потому что он содержит пароли к моему закрытому ключу и центральному репо maven. Я полагаю, что я мог бы добавить gradle.properties в мой файл .gitignore ... но я надеюсь, что я просто делаю что-то глупое, чего я не вижу. –

Смежные вопросы