Gradle 多模块发布快照到oss.jfrog.org失败,403
我正试图将一个包含多个模块的项目发布到artifactory(oss.jfrog.org)。当我运行artifactoryPublish时,我得到一个403错误,但我知道这不是权限问题,因为它与单个模块一起工作。它仅在尝试发布多个模块时失败 一些模块是AAR,其他模块是JAR,所有模块都包含源代码。我可以将它们全部发布到Bintray,但不能发布到artifactory(用于快照) 所以问题是,我如何配置一个多模块项目来将快照发布到oss.jfrog.org 我已经发现,如果我将其更改为发布单个模块,并使工件名称与组的最后一部分相同,那么它可以工作,但不同的名称不起作用(给出403错误) 所以,如果组是com.example.foo,我可以发布foo.jar(Gradle 多模块发布快照到oss.jfrog.org失败,403,gradle,artifactory,snapshot,bintray,maven-publish,Gradle,Artifactory,Snapshot,Bintray,Maven Publish,我正试图将一个包含多个模块的项目发布到artifactory(oss.jfrog.org)。当我运行artifactoryPublish时,我得到一个403错误,但我知道这不是权限问题,因为它与单个模块一起工作。它仅在尝试发布多个模块时失败 一些模块是AAR,其他模块是JAR,所有模块都包含源代码。我可以将它们全部发布到Bintray,但不能发布到artifactory(用于快照) 所以问题是,我如何配置一个多模块项目来将快照发布到oss.jfrog.org 我已经发现,如果我将其更改为发布单个
com/example/foo/foo/1.0.0-SNAPSHOT/foo-1.0.0.jar
)。但是我不能发布bar.jar(com/example/foo/bar/1.0.0-SNAPSHOT/bar.jar
)
此渐变包含在每个项目的构建中。渐变
afterEvaluate {
publishing {
publications {
mavenPublication(MavenPublication) {
artifact sourcesJar
if (project.plugins.hasPlugin("com.android.library")) {
artifact("$buildDir/outputs/aar/${project.name}-debug.aar")
} else {
artifact("$buildDir/libs/${project.name}-${version}.jar")
}
groupId "com.example.foo"
artifactId project.name // changing this to "foo" works for a single project
version version
pom {
name.set(project.name)
url.set(POM_URL)
packaging POM_PACKAGING
version version
licenses {
license {
name.set(POM_LICENSE_NAME)
url.set(POM_LICENSE_URL)
}
}
developers {
developer {
name.set(POM_DEVELOPER)
}
}
scm {
url.set(POM_SCM_URL)
connection.set(POM_SCM_CONNECTION)
developerConnection.set(POM_SCM_DEV_CONNECTION)
}
}
}
}
}
bintray {
user = project.findProperty('bintrayUser') ?: System.getenv('BINTRAY_USER')
key = project.findProperty('bintrayApiKey') ?: System.getenv('BINTRAY_API_KEY')
configurations = ['archives']
publish = true
dryRun = true
pkg {
name = project.name
repo = BINTRAY_REPO
userOrg = BINTRAY_ORG
licenses = [POM_LICENSE_NAME]
vcsUrl = POM_SCM_URL
version {
name = project.name
released = new Date()
}
}
}
artifactory {
contextUrl = 'http://oss.jfrog.org'
publish {
repository {
repoKey = 'oss-snapshot-local'
username = project.findProperty('bintrayUser') ?: System.getenv('BINTRAY_USER')
password = project.findProperty('bintrayApiKey') ?: System.getenv('BINTRAY_API_KEY')
}
defaults {
publications('mavenPublication')
publishArtifacts = true
publishPom = true
}
}
resolve {
repoKey = 'jcenter'
}
}
}
当您试图发布已经存在的人工制品时,Artifactory返回403。在您的例子中,如果您以前发布过多模块构建中的快照工件,那么每当您再次尝试这样做时,您将得到403。我知道您可以配置用户访问权限,以向用于部署的帐户提供删除权限,如图所示。但是,重写历史并不是一种好的做法 关于重命名您的组和人工制品,我认为这不会提供解决方案,因为问题不是您的GAV坐标,而是具有匹配GAV的人工制品已经存在的事实
如果我可以问一下,为什么要使用快照人工制品?动态依赖项和依赖项锁定不能实现相同的行为吗?您的问题是什么?这和gradle脚本有什么关系?403表示访问被拒绝,即某些身份验证错误。除了使用正确的身份验证之外,我不知道您希望得到什么答案parameters@smac89我已经澄清了这个问题,即“如何配置一个多模块项目以将快照发布到oss.jfrog.org?”我使用快照是因为我们有一个新的主要更新,我们不想发布到普通版本(bintray)当我们熨平虫子的时候,找到源代码。我想我的问题是为每个模块设置artifactory配置中的
defaults
部分,而不仅仅是root build.gradle。我在第一次发布时仍然遇到403故障,但在那之后它就可以工作了,所以我还没有完全弄清楚,但它仍然可以工作。似乎我也可以重复发布同一版本,所以我必须获得该许可。我看不到在oss.jfrog.org上查看权限的方法,但是在bintray上它很好。我明白了。我们使用了两个独立的工件库,一个用于分支,另一个用于发布版本,所以我们不混合使用这两个,只需查看单独的发布版本即可。