Gradle 多模块发布快照到oss.jfrog.org失败,403

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 我已经发现,如果我将其更改为发布单个

我正试图将一个包含多个模块的项目发布到artifactory(oss.jfrog.org)。当我运行artifactoryPublish时,我得到一个403错误,但我知道这不是权限问题,因为它与单个模块一起工作。它仅在尝试发布多个模块时失败

一些模块是AAR,其他模块是JAR,所有模块都包含源代码。我可以将它们全部发布到Bintray,但不能发布到artifactory(用于快照)

所以问题是,我如何配置一个多模块项目来将快照发布到oss.jfrog.org

我已经发现,如果我将其更改为发布单个模块,并使工件名称与组的最后一部分相同,那么它可以工作,但不同的名称不起作用(给出403错误)

所以,如果组是com.example.foo,我可以发布foo.jar(
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上它很好。我明白了。我们使用了两个独立的工件库,一个用于分支,另一个用于发布版本,所以我们不混合使用这两个,只需查看单独的发布版本即可。