从Bamboo 6发布到Artifactory

Gui*_*ume 7 bamboo artifactory

我正在使用Bamboo 6.0.3 build 60004,我为Bamboo安装2.1.0官方Artifactory插件的版本.

build.gradle项目的外观如下:

apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'
...
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}

afterEvaluate {
    androidJavadocs.classpath += files(android.libraryVariants.collect { variant ->
        variant.javaCompile.classpath.files
    })
}

publishing {
    publications {
        android.buildTypes.all { variant ->
            "${variant.name}Aar"(MavenPublication) {
                // set values from Android manifest file
                groupId group
                version version
                if (variant.name == "release") {
                    artifactId project.getName()
                }
                else {
                    artifactId "${project.getName()}-${variant.name}"
                }

                artifact "$buildDir/outputs/aar/${project.getName()}-${variant.name}-${version}.aar"
                artifact androidJavadocsJar

                pom.withXml {
                    def dependenciesNode = asNode().appendNode('dependencies')

                    // List all compile dependencies and write to POM
                    configurations.compile.getAllDependencies().each { Dependency dep ->
                        if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
                            return // ignore invalid dependencies

                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', dep.group)
                        dependencyNode.appendNode('artifactId', dep.name)
                        dependencyNode.appendNode('version', dep.version)

                        if (!dep.transitive) {
                            // If this dependency is transitive, we should force exclude all its dependencies them from the POM
                            def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
                            exclusionNode.appendNode('groupId', '*')
                            exclusionNode.appendNode('artifactId', '*')
                        } else if (!dep.properties.excludeRules.empty) {
                            // Otherwise add specified exclude rules
                            def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
                            dep.properties.excludeRules.each { ExcludeRule rule ->
                                exclusionNode.appendNode('groupId', rule.group ?: '*')
                                exclusionNode.appendNode('artifactId', rule.module ?: '*')
                            }
                        }
                    }
                }
            }
        }
    }
}

def libraryGroupId = group
def libraryVersion = version

artifactory {
    contextUrl = '<artifactory_url>'

    publish {
        repository {
            repoKey = '<repoKey>'

            username = artifactory_username
            password = artifactory_password
        }
        defaults {
            android.buildTypes.all { variant ->
                publications("${variant.name}Aar")
                publishArtifacts = true
            }

            properties = ['qa.level': 'basic', 'dev.team': 'core']
            publishPom = true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我gradle build assembleRelease artifactoryPublish在笔记本电脑上运行命令时,它会在Artifactory repo aarpom文件中上传.

我尝试Artifactory Deployment在部署项目中使用该任务,该任务在构建任务之后运行gradle build assembleRelease(所以相同但没有发布到工件),但是它只发布aar文件,并且工件中的目录结构看起来不一样(它不会通过子文件夹细分包名称).如何与Bamboo实现相同的目标?

red*_*ven 1

根据Bamboo Artifacotry 插件官方页面,目前还没有适用于 Bamboo 6.0 的插件(但适用于 Bamboo 5.15)。但是,如果您使用 gradle 任务来发布,则不会使用 Bamboo 插件。