有一个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'
}
}
}
}
}
请问这个如何配置这个路径信息?
Utiliser directement des espaces réservés devrait être le moyen le plus simple :
Remplissez les informations privées dans le fichier gradle.properties, telles que le nom d'utilisateur et le mot de passe :
Utilisez ensuite ${username}, ${password} directement dans le script de construction. Cependant, cette méthode nécessite que l'utilisateur configure ses propres gradle.properties S'il n'est pas configuré, l'espace réservé ne sera pas trouvé
.Vous avez mentionné travi-ci,
travis a deux commandes de cryptage utilisées pour traiter les informations sensibles dans le projet
Référence :
https://docs.travis-ci.com/us...
https://docs.travis-ci.com/us...
https://uedsky.com/2016-06/tr...
Enregistrez le contenu privé dans un fichier et ajoutez le fichier à .ignore, comme cet article « Gradle en action : publier les packages aar dans le référentiel maven »
gradle-nexus-plugin
Identifiants
Dans votre ~/.gradle/gradle.properties, vous devrez définir les informations d'identification Nexus obligatoires requises pour télécharger vos artefacts.
Un plug-in comme celui ci-dessus par défaut le mot de passe utilisateur Placé dans le répertoire
~
.De plus, l'un des plus grands avantages de
Gradle
est la flexibilité, car il est écrit directement à l'aide de scriptsgroovy
, vous pouvez donc charger n'importe quel fichier de configuration dans n'importe quel répertoire. Par exemple, il est acceptable d'utiliserProperties
directement dans un script pour lire des fichiers dans un répertoire et les chiffrer dans un format spécifié ou autre.