programing tip

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

itbloger 2020. 6. 17. 18:59
반응형

커밋해서는 안되는 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)


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

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

$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)

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

System.getenv()['YOUR_ENV_VARIABLE']

For those of you who are building on a MacOS, and don't like leaving your password in clear text on your machine, you can use the keychain tool to store the credentials and then inject it into the build. Credits go to Viktor Eriksson. https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/

참고URL : https://stackoverflow.com/questions/12749225/where-to-put-gradle-configuration-i-e-credentials-that-should-not-be-committe

반응형