[gradle] 커밋해서는 안되는 Gradle 구성 (예 : 자격 증명)을 어디에 두어야합니까?

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()은 인증 방법 (예 : 기본) 만 제공하지만 자격 증명은 제공하지 않습니다.

당신은 또한 그것을 사용하지 말아야 은 실패에 일반 자격 증명을 인쇄 이후로!

이것은 그의 모습이 build.gradle

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

에서 gradle.properties당신의 USERHOME dir을 넣어에서 :

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)


답변

명령 줄에 변수를 제공 할 수도 있습니다 -PmavenUser=user -PmavenPassword=password.

이것은 어떤 이유로 gradle.properties 파일을 사용할 수없는 경우에 유용 할 수 있습니다. 예를 들어 빌드 서버에서 Gradle을 -g옵션 과 함께 사용하여 각 빌드 계획에 고유 한 옵션이 있습니다 GRADLE_HOME.


답변

사용자 별 자격 증명이있는 경우 (즉, 개발자마다 다른 사용자 이름 / 암호를 가질 수 있음) gradle-properties-plugin을 사용하는 것이 좋습니다 .

  1. 기본 설정 gradle.properties
  2. 각 개발자는로 재정의합니다 gradle-local.properties(git ignore 여야 함).

$USER_HOME/.gradle/gradle.properties다른 프로젝트는 동일한 속성 이름을 가질 수 있기 때문에이를 재정의하는 것보다 낫습니다 .


답변

신임 정보를 특성 파일에 넣고 다음과 같이 사용하여 읽을 수 있습니다.

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

또 다른 방법은 OS 레벨에서 환경 변수를 정의하고 다음을 사용하여 읽는 것입니다.

System.getenv()['YOUR_ENV_VARIABLE']


답변

MacOS를 구축하고 컴퓨터에 암호를 일반 텍스트로 남기고 싶지 않은 사용자는 키 체인 도구를 사용하여 자격 증명을 저장 한 다음 빌드에 주입 할 수 있습니다. 크레딧은 Viktor Eriksson으로갑니다.
https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/


답변