Получить BuildType VersionName для ArtifactoryPublication - PullRequest
0 голосов
/ 12 ноября 2018

Я использую следующий gradle для создания типа сборки снимка с именем файла, включающим текущий хеш коммита и "SNAPSHOT" в качестве суффикса:

def libraryGroupId = 'my.group.id'
def libraryVersion = '1.7.2'
def libraryArtifactId = 'core'

android {
    defaultConfig {
        versionName libraryVersion
    }
    buildTypes {
        debug {
            versionNameSuffix '-debug'
       }
        snapshot {
            versionNameSuffix '-SNAPSHOT-' + getCommitHash()
        }
    }
    libraryVariants.all { variant ->
        variant.outputs.all {
            def versionName = variant.variantData.variantConfiguration.versionName
            outputFileName = "${libraryArtifactId}-" + versionName + ".aar"
        }
    }
}

Кроме того, у меня есть задача публикации артефактов:

publishing {
    publications {
        aar(MavenPublication) {
            groupId libraryGroupId
            version libraryVersion
            artifactId libraryArtifactId

            def artifactUrl = "$buildDir/outputs/aar/<??outputFileName??>"
            println "#### artifactUrl: " + artifactUrl
            artifact(artifactUrl)

            pom.withXml {
                ...
            }
        }
    }
}

Прямо сейчас «outputFileName» всегда устанавливается в последний определенный тип сборки, так как option.outputs.all переопределяет его для каждого типа сборки. Итак, мой вопрос:

Как получить outputFileName моей текущей сборки в закрытии публикации artifactory?

Любой другой способ приветствуется. Это не должно быть через самоопределяемую переменную. Но artifactoryUrl должен совпадать с сгенерированным /outputs/aar/<snapshot-filename>.aar.

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете сгенерировать задачу публикации для каждого из ваших buildVariant.

publishing {
    publications {
        android.libraryVariants.all { variant ->
        "aar${variant.name.capitalize()}"(MavenPublication) {
          def versionName = variant.variantData.variantConfiguration.versionName
          artifact("$buildDir/outputs/aar/${libraryArtifactId}-${versionName}.aar")
        }
      }
    }    
}

и затем вызовите правильное задание - это должно быть что-то вроде publishAarSnapshotPublicationToMavenRepository

...