Taahhüt edilmemesi gereken Gradle yapılandırmasını (yani kimlik bilgilerini) nereye koyacağız?


155

Maven deposuna Gradle yapılı bir eser dağıtmaya çalışıyorum ve bunun için kimlik bilgilerini belirtmem gerekiyor. Şimdilik iyi çalışıyor:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://.../nexus/content/repositories/snapshots/") {
                authentication(userName: "admin", password: "admin123")
            }
        }
    }
}

Ancak kimlik bilgilerini kaynak kontrolünde saklamaktan hoşlanmıyorum. Maven ile, benim, bir sunucu konfigürasyonunu ve atama kimlik bilgilerini tanımlarsınız ~/.m2/settings.xml. Gradle ile benzer bir şeyi nasıl yaparım?


3
Yönetici olarak şifre olarak kullanmanın güvenlik açısından kötü olduğunu biliyorsunuz, doğru;)
jwatkins

Yanıtlar:


228

~ / .gradle / gradle.properties :

mavenUser=admin
mavenPassword=admin123

build.gradle :

...
authentication(userName: mavenUser, password: mavenPassword)

2
Giriş gradle.propertiesyapılmamalı mı VCS?
theblang

24
Gradle kullanıcı evindeki değil (yukarıdaki yola bakın).
Peter Niederwieser

Bazı aşamalar için ... maven yerine mavenPass kullanın - Şifre
Rodrigo

2
Proje özelliklerini aşağıdaki kimlik doğrulamasından geçirmenizi öneririm (userName: project.properties.mavenUser, parola: project.properties.mavenPassword) Hiçbir özellik mavenUser / Password belirtilmediğinde bu derleme başarısız olmaz.
Dmitry

Aynı şeyi yapmak zorundaydım ama 2 farklı ortam değişkeni kullanmak zorunda kaldım: SONATYPE_NEXUS_USERNAME & SONATYPE_NEXUS_PASSWORD
Snicolas

94

İlk cevap hala geçerlidir, ancak API geçmişte değişmiştir. Düzenlemem kabul edilmediğinden ayrı bir cevap olarak gönderiyorum.

Yöntem authentication()yalnızca kimlik doğrulama yöntemini (örn. Temel) sağlamak için kullanılır, ancak kimlik bilgilerini kullanmaz.

Ayrıca , kimlik bilgilerini düz olarak yazdırdığı için de kullanmamalısınız !

Bu onun nasıl görünmesi gerektiği build.gradle

    maven {
        credentials {
            username "$mavenUser"
            password "$mavenPassword"
        }
        url 'https://maven.yourcorp.net/'
   }

Kullanıcı gradle.propertiesevinizde dir koymak:

mavenUser=admin
mavenPassword=admin123

Ayrıca GRADLE_USER_HOME, ayarının ~/.gradleaksi durumda ayarlandığından emin olun .

Ayrıca bakınız:

https://docs.gradle.org/current/userguide/build_environment.html

ve

https://docs.gradle.org/current/userguide/dependency_management.html (23.6.4.1)


Bunun OP tarafından nasıl kullanılacağını açıklığa kavuşturabilir misiniz? ie uploadArchives {repositories {mavenDeployer {
Matt C

Üzgünüm ama sorunuzu alamadım
Anket

4
OP, uploadArchives> depolar> mavenDeployer> havuz> kimlik doğrulama adında kimlik doğrulamasını kullanır. Yine de varsaydığım uploadArchives'ı kullanmak istiyorlar, bu yüzden OP'nin yapı yapılandırması çözümünüz uygulandığında nasıl görünür? Kimlik doğrulamasını kaldırmaları gerekiyor mu ve işe yarayacak mı?
Matt C

Asla mavenDeployer isim alanını kullanmadığım için size söyleyemem. Uploadarchives hala geçerli bir görevdir, ancak bu görevin kimlik bilgileri maven ad alanında yapılandırılır.
Anket

Bu cevap soru ile uyumsuz. Bu kullanarak bulunuyor maven-publishsoru kullanıyor ise eklentisi maveneklentisi.
Chry Cheng

16

Ayrıca komut satırında ile değişkenler de sağlayabilirsiniz -PmavenUser=user -PmavenPassword=password.

Bu, bir nedenden dolayı gradle.properties dosyasını kullanamamanızda yararlı olabilir. Örneğin, bir yapı sunucusunda -g, her bir yapı planının kendine ait olması için Gradle seçeneğini kullanıyoruz GRADLE_HOME.


16

Kullanıcıya özel kimlik bilgileriniz varsa (yani her geliştiricinin farklı kullanıcı adı / parolası olabilir) o zaman gradle-properties-plugin kullanmanızı öneririm .

  1. Varsayılanları koy gradle.properties
  2. Her geliştirici ile geçersiz kılınır gradle-local.properties(bu, yoksayılmalıdır).

$USER_HOME/.gradle/gradle.propertiesFarklı projeler aynı mülk adlarına sahip olabileceğinden, bu, geçersiz kılmadan daha iyidir .


Tam çalışan bir MWE ekleyebilir misiniz? Eklenti nasıl dahil edilir build.gradle. uploadArchivesYapılandırmada kimlik bilgileri nasıl kullanılır ?
koppor

@koppor Bunun hala işe yarayıp yaramadığından emin değilim ama açık kaynak projemde kullandım
Krishnaraj

7

Kimlik bilgilerini bir özellikler dosyasına koyabilir ve şöyle bir şey kullanarak okuyabilirsiniz:

Properties props = new Properties() 
props.load(new FileInputStream("yourPath/credentials.properties")) 
project.setProperty('props', props)

Diğer bir yaklaşım, ortam değişkenlerini işletim sistemi düzeyinde tanımlamak ve aşağıdakileri kullanarak okumaktır:

System.getenv()['YOUR_ENV_VARIABLE']

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.