Saya mencoba untuk menyebarkan artefak Gradle-built ke repo Maven, dan saya perlu menentukan kredensial untuk itu. Ini berfungsi dengan baik untuk saat ini:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://.../nexus/content/repositories/snapshots/") {
authentication(userName: "admin", password: "admin123")
}
}
}
}
Tapi saya tidak suka harus menyimpan kredensial di kontrol sumber. Dengan Maven, saya akan mendefinisikan konfigurasi server, dan menetapkan kredensial di server saya ~/.m2/settings.xml
. Bagaimana saya melakukan sesuatu yang mirip dengan Gradle?
Jawaban:
~ / .gradle / gradle.properties :
build.gradle :
sumber
gradle.properties
tidak masuk keVCS
?Jawaban pertama masih valid, tetapi API telah berubah di masa lalu. Karena hasil edit saya tidak ada, saya mempostingnya sebagai jawaban terpisah.
Metode
authentication()
ini hanya digunakan untuk menyediakan metode otentikasi (misalnya Dasar) tetapi tidak untuk kredensial.Anda juga tidak boleh menggunakannya karena itu mencetak kredensial pada kegagalan!
Ini bagaimana seharusnya terlihat seperti di Anda
build.gradle
Di
gradle.properties
dalam direktori home user Anda:Juga pastikan bahwa
GRADLE_USER_HOME
diatur ke~/.gradle
file properti di sana tidak akan diselesaikan.Lihat juga:
https://docs.gradle.org/current/userguide/build_environment.html
dan
https://docs.gradle.org/current/userguide/dependency_management.html (23.6.4.1)
sumber
maven-publish
plugin sementara pertanyaannya menggunakanmaven
plugin.Anda juga bisa menyediakan variabel pada baris perintah dengan
-PmavenUser=user -PmavenPassword=password
.Ini mungkin berguna Anda tidak dapat menggunakan file properti gradle.prop untuk beberapa alasan. Misal pada server build, kami menggunakan Gradle dengan
-g
opsi sehingga setiap paket build memiliki sendiriGRADLE_HOME
.sumber
Jika Anda memiliki kredensial khusus pengguna (yaitu setiap pengembang mungkin memiliki nama pengguna / kata sandi berbeda) maka saya akan merekomendasikan menggunakan gradle-properties-plugin .
gradle.properties
gradle-local.properties
(ini harus diabaikan git).Ini lebih baik daripada mengganti menggunakan
$USER_HOME/.gradle/gradle.properties
karena proyek yang berbeda mungkin memiliki nama properti yang sama.sumber
build.gradle
. Bagaimana cara menggunakan kredensial dalamuploadArchives
konfigurasi?Anda bisa meletakkan kredensial dalam file properti dan membacanya menggunakan sesuatu seperti ini:
Pendekatan lain adalah mendefinisikan variabel lingkungan di tingkat OS dan membacanya menggunakan:
sumber
Bagi Anda yang membuat MacOS, dan tidak suka meninggalkan kata sandi dalam bentuk teks pada mesin Anda, Anda dapat menggunakan alat gantungan kunci untuk menyimpan kredensial dan kemudian menyuntikkannya ke dalam build. Kredit diberikan ke Viktor Eriksson. https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/
sumber