Ответ 1
~/.gradle/ gradle.properties
mavenUser=admin
mavenPassword=admin123
build.gradle
...
authentication(userName: mavenUser, password: mavenPassword)
Я пытаюсь развернуть Gradle -строенный артефакт в репозиторий Maven, и мне нужно указать учетные данные для этого. На данный момент это отлично работает:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://.../nexus/content/repositories/snapshots/") {
authentication(userName: "admin", password: "admin123")
}
}
}
}
Но мне не нравится хранить учетные данные в исходном элементе управления. С Maven я бы определил конфигурацию сервера и назначил учетные данные в моем ~/.m2/settings.xml
. Как мне сделать что-то подобное с Gradle?
~/.gradle/ gradle.properties
mavenUser=admin
mavenPassword=admin123
build.gradle
...
authentication(userName: mavenUser, password: mavenPassword)
Первый ответ по-прежнему действителен, но API в прошлом изменился. Поскольку мое редактирование не было принято, я отправляю его как отдельный ответ.
Метод authentication()
используется только для предоставления метода аутентификации (например, Basic), но не для всех учетных данных.
Вы также не должны использовать его, так как он печатает учетную запись plain при ошибке!
Это, как он должен выглядеть в вашем build.gradle
maven {
credentials {
username "$mavenUser"
password "$mavenPassword"
}
url 'https://maven.yourcorp.net/'
}
В gradle.properties
в вашем каталоге userhome:
mavenUser=admin
mavenPassword=admin123
Также убедитесь, что для параметра GRADLE_USER_HOME
установлено значение ~/.gradle
, иначе файл свойств там не будет разрешен.
См. также:
https://docs.gradle.org/current/userguide/build_environment.html
и
https://docs.gradle.org/current/userguide/dependency_management.html (23.6.4.1)
Если у вас есть пользовательские учетные данные (т. Е. У каждого разработчика могут быть разные имя пользователя и пароль), я бы порекомендовал использовать плагин gradle-properties-plugin.
gradle.properties
gradle-local.properties
(это следует игнорировать git). Это лучше, чем переопределение с использованием $USER_HOME/.gradle/gradle.properties
потому что разные проекты могут иметь одинаковые имена свойств.
Вы также можете указать переменные в командной строке с помощью -PmavenUser=user -PmavenPassword=password
.
Это может быть полезно, что вы не можете использовать файл gradle.properties по какой-либо причине. Например. на сервере сборки мы используем Gradle с опцией -g
, чтобы каждый план сборки имел свой собственный GRADLE_HOME
.
Вы можете поместить учетные данные в файл свойств и прочитать его, используя что-то вроде этого:
Properties props = new Properties()
props.load(new FileInputStream("yourPath/credentials.properties"))
project.setProperty('props', props)
Другой подход - определить переменные среды на уровне ОС и прочитать их, используя:
System.getenv()['YOUR_ENV_VARIABLE']
Для тех из вас, кто использует MacOS и не любит оставлять свой пароль открытым текстом на своем компьютере, вы можете использовать инструмент цепочки для ключей, чтобы сохранить учетные данные, а затем внедрить их в сборку. Кредиты достаются Виктору Эрикссону. https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/