我正在尝试将我的第一个Gradle项目上载到Maven Central。为此,我遵循了Sonatype的文档,并创建了一个uploadArchives生成元数据的任务。
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)
}
...etc. etc.
Run Code Online (Sandbox Code Playgroud)
该任务引用了两个属性,“ ossrhUsername”和“ ossrhPassword”,我应该在其中定义它们gradle.properties;但是,如果我没有gradle.properties这些属性,则即使对于非uploadArchives任务,构建也会因错误而失败。
$ gradlew test
Run Code Online (Sandbox Code Playgroud)
无法获得类型为org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer的对象的未知属性'ossrhUsername'。
我希望构建成功(uploadArchives当然除了任务之外)而不必在gradle.properties文件中定义这些属性。
我该怎么做呢?
仅为pom.xmlMaven Central上传管理一个单独的目录会更简单吗?
编辑识别出的潜在重复项是关于将凭证外部化的地方。我的问题是,即使没有将凭据外部化,如何确保Gradle构建仍能成功执行gradle.properties。我希望其他人能够克隆存储库并执行Gradle,而不必定义OSSRH凭证属性。
我没有直接引用属性,而是将属性名称作为字符串传递给findProperty,从而消除了错误。该API文档表明这种方法是“孵化”,但因为2.13版本,它的存在了。
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: findProperty('ossrhUsername'), password: findProperty('ossrhPassword'))
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: findProperty('ossrhUsername'), password: findProperty('ossrhPassword'))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |