0

This is my first time trying to publish something to maven but I have an Android library that I am trying to integrate with TravisCI to build it when anything gets pushed to master Looking at the Bintray gradle documentation along with some articles I found about integration between the two and I came up with this for my build.gradle file

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'

}

The library itself seems to build fine in travis but when I look in my bintray repo I see that there is nothing there.

This is my yml file for building on travis

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

Can anyone help me out here to get it published to bintray?

This is the full repo anyone needs something else

tyczj
  • 71,600
  • 54
  • 194
  • 296

1 Answers1

1

The Travis yml file is only building the aar but not publishing as per the script command ./gradlew build. Changing it to ./gradlew build bintrayUpload should do the trick as in step 8 here.

ahasbini
  • 6,761
  • 2
  • 29
  • 45
  • When I add that I get an error saying `Execution failed for task ':mlcamera:publishProductionPublicationToMavenLocal'. > Failed to publish publication 'Production' to repository 'mavenLocal' > Invalid publication 'Production': multiple artifacts with the identical extension and classifier ('aar', 'null').` – tyczj Mar 14 '20 at 00:04