Search code examples
androidmavengradlepom.xmlandroid-library

Skipping upload for missing aar and pom file


I'm building an aar Library for Android and im facing an issue. POM and ARR files are not uploaded.

There is a error

Skipping upload for missing file 'F:\Android\Personal_Project\sampleMavenLib\sinalib\build\outputs\aar\sinalib-release.aar'. Skipping upload for missing file 'F:\Android\Personal_Project\sampleMavenLib\sinalib\build\publications\Production\pom-default.xml'.

I checked these two path and the aar file was there and its generated but there isnt any path for pom file

this is my gradle

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

android {
    compileSdkVersion 28

defaultConfig {
    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0.2"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

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

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
    }
}

ext {
    bintrayRepo = 'maven'
    bintrayName = 'sinalib'

    publishedGroupId = 'come.sinarahimi.sinalib'
    libraryName = 'Sinalib'
    artifact = 'sinalib'

libraryDescription = 'This view is a container that supports diagonal scroll and fling gesture. It is based on AOSP HorizontalScrollView.'

siteUrl = 'https://github.com/Sinarahimi/sampleMavenLib'
gitUrl = 'https://github.com/Sinarahimi/sampleMavenLib.git'

libraryVersion = '1.0.2'

developerId = 'sinarahimi'
developerName = 'Sina RAHIMI'
developerEmail = 'develop.rahimi95@gmail.com'

licenseName = 'The Apache Software License, Version 2.0'
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
allLicenses = ["Apache-2.0"]

}

publishing {
    publications {
        Production(MavenPublication) {
            artifact("$buildDir/outputs/aar/sinalib-release.aar")
            groupId publishedGroupId
            artifactId artifact
            version libraryVersion

            //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 {
                    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

        Properties properties = new Properties()
 properties.load(project.rootProject.file('local.properties').newDataInputStrea( 
        ))
        user = properties.getProperty('user')
        key = properties.getProperty('apikey')
        override = true
        pkg {
            repo = bintrayRepo
            name = project.name
            userOrg = 'sinara'
            licenses = allLicenses
            desc = libraryDescription
            websiteUrl = siteUrl
            vcsUrl = gitUrl
            version {
                name = libraryVersion
            }
            publish = true
        }
        publications = ['Production']
    }

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])

        implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    }
}

Solution

  • After I tried a lot of things i found two points :

    1 - i changed this

    artifact("$buildDir/outputs/aar/sinalib-release.aar")
    

    to

    artifact("build/outputs/aar/sinalib-release.aar")
    

    2 - The repository that you create in bintray.com should be the same as the repo in the pkg part.

    this solved the Error Skipping upload for missing file and it uploaded the arr file. But One error still remains that it cant upload and generate pom file.

    So i found this command:

    clean build generatePomFileForProductionPublication bintrayUpload
    

    It was working for me but still, have a problem with adding dependencies into pom although I have this code it doesn't work :

    //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 {
                    def dependencyNode = dependenciesNode.appendNode('dependency')
                    dependencyNode.appendNode('groupId', it.group)
                    dependencyNode.appendNode('artifactId', it.name)
                    dependencyNode.appendNode('version', it.version)
                }