Rumah > Soal Jawab > teks badan
有一个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'
}
}
}
}
}
请问这个如何配置这个路径信息?
伊谢尔伦2017-04-18 10:00:36
Menggunakan ruang letak secara langsung sepatutnya menjadi cara paling mudah:
Isikan maklumat peribadi dalam fail gradle.properties, seperti nama pengguna dan kata laluan:
username=
password=
Kemudian gunakan ${username}, ${password} secara langsung dalam skrip binaan, bagaimanapun, kaedah ini memerlukan pengguna untuk mengkonfigurasi gradle.properties mereka sendiri Jika tidak dikonfigurasikan, pemegang tempat tidak akan ditemui
伊谢尔伦2017-04-18 10:00:36
Jumpa anda menyebut travi-ci,
travis mempunyai dua arahan penyulitan yang digunakan untuk memproses maklumat sensitif dalam projek
# 加密命令需要登录后在项目目录执行,travis 网站说加密得到 linux 或 mac 上执行
gem install travis # 需要ruby才能有gem
travis login
# 加密环境变量或者文件
travis encrypt env.global.PASSWORD=your_password --add # 添加环境变量 PASSWORD 到 .travis.yml,程序中直接使用环境变量
travis encrypt-file secret-file --add
Rujukan:
https://docs.travis-ci.com/us...
https://docs.travis-ci.com/us...
https://uedsky.com/2016-06/tr...
ringa_lee2017-04-18 10:00:36
Simpan kandungan peribadi ke dalam fail dan tambahkan fail ke .ignore, seperti artikel ini "Gradle in action: Terbitkan pakej aar ke repositori maven"
阿神2017-04-18 10:00:36
gradle-nexus-plugin
Bukti kelayakan
Dalam ~/.gradle/gradle.properties anda, anda perlu menetapkan bukti kelayakan Nexus mandatori yang diperlukan untuk memuat naik artifak anda.
Pemalam seperti yang di atas secara lalai kata laluan pengguna Diletakkan dalam direktori ~
.
Selain itu, salah satu kelebihan terbesar Gradle
ialah fleksibiliti, kerana ia ditulis terus menggunakan skrip groovy
, jadi anda boleh memuatkan sebarang fail konfigurasi dalam mana-mana direktori. Contohnya, adalah OK untuk menggunakan Properties
terus dalam skrip untuk membaca fail dalam direktori dan menyulitkannya dalam format yang ditentukan atau sebaliknya.