java - 共享的Gradle脚本中如何配置一些私密信息
巴扎黑
巴扎黑 2017-04-18 09:58:36
0
4
797

有一个Github上的开源Java项目,使用Gradle构建。现在需要发布到Maven中央仓库,其中需要配置一些中央仓库的用户、密码、签名等信息。这些都是私密信息,直接贴build脚本里面放在Github上肯定是不合适的。
Google了很久找到一个解决办法,在项目目录下创建gradle.properties文件。存放用户名密码信息,但实际值为空:

version=0.4.5-SNAPSHOT
signing.keyId=
signing.password=
signing.secretKeyRingFile=
ossrhUsername=
ossrhPassword=

现在只有一个问题,在使用travis-ci自动构建的时候,提示错误:

:signArchives FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Could not evaluate onlyIf predicate for task ':signArchives'.
> Neither path nor baseDir may be null or empty string. path='' basedir='/home/travis/build/xyalan/marathon-cli'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED

我的build脚本部分内容:

artifacts {
    archives javadocJar, sourcesJar
}

ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
signing {
    required {
        boolean signed =  isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives")
        print signed
        signed
    }
    sign configurations.archives
}

uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            pom.project {
                name 'marathon-cli'
                packaging 'jar'
                // optionally artifactId can be defined here
                description 'A application used as an example on how to set up pushing  its components to the Central Repository.'
                url 'http://www.example.com/example-application'

                scm {
                    connection 'scm:git:git://github.com/xyalan/marathon-cli.git'
                    developerConnection 'scm:git:git@github.com:xyalan/marathon-cli.git'
                    url 'https://github.com/xyalan/marathon-cli'
                }

                licenses {
                    license {
                        name 'The Apache License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                developers {
                    developer {
                        id 'alan'
                        name 'Alan Yang'
                        email 'alanlhy@gmail.com'
                    }
                }
            }
        }
    }

请问这个如何配置这个路径信息?

巴扎黑
巴扎黑

모든 응답(4)
伊谢尔伦

자리 표시자를 직접 사용하는 것이 가장 쉬운 방법입니다.
gradle.properties 파일에 사용자 이름 및 비밀번호와 같은 개인 정보를 입력하세요.

으아악

그런 다음 빌드 스크립트에서 직접 ${username}, ${password}를 사용하세요. 그러나 이 방법을 사용하려면 사용자가 자체 gradle.properties를 구성해야 합니다. 구성하지 않으면 자리 표시자를 찾을 수 없습니다.

伊谢尔伦

travi-ci를 언급하셨는데요,
travis에는 프로젝트의 민감한 정보를 처리하는 데 사용되는 두 가지 암호화 명령이 있습니다

으아악

참고:

  • https://docs.travis-ci.com/us...

  • https://docs.travis-ci.com/us...

  • https://uedsky.com/2016-06/tr...

左手右手慢动作

비공개 콘텐츠를 파일에 저장하고 "Gradle in action: Publish aar packages to maven 저장소" 기사와 같이 해당 파일을 .ignore에 추가합니다.

阿神

gradle-nexus-플러그인

자격 증명
~/.gradle/gradle.properties에서 아티팩트 업로드에 필요한 필수 Nexus 자격 증명을 설정해야 합니다.
위 기본값과 같은 플러그인 사용자 비밀번호는 ~ 디렉토리에 있습니다.

또한 Gradle의 가장 큰 장점 중 하나는 유연성입니다. groovy 스크립트를 사용하여 직접 작성되므로 모든 디렉터리에 있는 모든 구성 파일을 로드할 수 있기 때문입니다. 예를 들어 디렉터리의 파일을 읽고 지정된 형식 등으로 암호화하기 위해 스크립트에서 직접 Properties을 사용하는 것은 괜찮습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿