【问题标题】:Uploading Android aar library to bintray from TravisCI从 TravisCI 将 Android aar 库上传到 bintray
【发布时间】:2020-06-22 22:22:51
【问题描述】:

这是我第一次尝试向 maven 发布一些东西,但我有一个 Android 库,我正在尝试与 TravisCI 集成以在任何东西被推送到 master 时构建它查看 Bintray gradle documentation 以及一些我发现关于两者之间集成的文章,我为我的build.gradle 文件提出了这个

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'

    publishing {
        publications {
            Production(MavenPublication) {
                artifact("$buildDir/outputs/aar/mlcamera-release.aar")
                groupId 'com.tycz'
                artifactId 'mlcamera'
                version '0.1.0'

                //The publication doesn't know about our dependencies, so we have to manually add them to the pom
                pom.withXml {
                    //def dependenciesNode = asNode().appendNode('dependencies')
                    //Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
                    configurations.compile.allDependencies.each {
                        if (it.name != 'unspecified') {
                            def dependencyNode = dependenciesNode.appendNode('dependency')
                            dependencyNode.appendNode('groupId', it.group)
                            dependencyNode.appendNode('artifactId', it.name)
                            dependencyNode.appendNode('version', it.version)
                        }
                    }
                }
            }
        }
    }

    bintray {
        // Get Bintray credential from environment variable
        user = System.getenv('BINTRAY_USER')
        key = System.getenv('BINTRAY_API_KEY')
        dryRun = false
        override = false
        publish = true
        pkg {
            repo = 'MLCamera'
            name = project.name
            userOrg = 'tyczj359'
            desc = 'A wrapper library for the new CameraX API and Firebase MLKit to create easier setup for MLKit usage'
            vcsUrl = 'https://github.com/tyczj/MLCamera.git'

            version {
                name = '0.1.0'
                released = new Date()
            }
        }
        publications = ['Production']
    }

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "0.1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
    implementation 'com.google.firebase:firebase-ml-vision-barcode-model:16.0.2'
    implementation 'com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation "androidx.camera:camera-core:1.0.0-beta01"
    implementation "androidx.camera:camera-camera2:1.0.0-beta01"
    implementation "androidx.camera:camera-view:1.0.0-alpha08"
    implementation "androidx.camera:camera-lifecycle:1.0.0-beta01"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

}

库本身似乎在 travis 中构建得很好,但是当我查看我的 bintray 存储库时,我发现那里什么都没有。

这是我在 travis 上构建的 yml 文件

language: android
jdk: oraclejdk8
dist: trusty

android:
  components:
    - build-tools-29.0.3
    - android-29
    - extra-google-m2repository
    - extra-android-m2repository
    - extra-google-google_play_services
script:
  - ./gradlew build
before_cache:
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
  directories:
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/
    - $HOME/.android/build-cache

谁能帮我把它发布到 bintray 上?

这是完整的repo 任何人都需要别的东西

【问题讨论】:

    标签: android gradle travis-ci bintray


    【解决方案1】:

    Travis yml 文件仅构建 aar,但未按照 script 命令 ./gradlew build 发布。将其更改为 ./gradlew build bintrayUpload 应该可以像第 8 步中那样实现 here

    【讨论】:

    • 当我添加时我收到一条错误消息Execution failed for task ':mlcamera:publishProductionPublicationToMavenLocal'. &gt; Failed to publish publication 'Production' to repository 'mavenLocal' &gt; Invalid publication 'Production': multiple artifacts with the identical extension and classifier ('aar', 'null').
    猜你喜欢
    • 2019-01-31
    • 2016-03-23
    • 2017-02-15
    • 2016-07-01
    • 2016-09-16
    • 2016-05-24
    • 2018-08-09
    • 2017-05-04
    • 2017-03-03
    相关资源
    最近更新 更多