Файл Jar не содержит файлов классов после bintrayUpload

#android #gradle #bintray

#Android #gradle #bintray

Вопрос:

Я пытаюсь опубликовать свою библиотеку в bintray. Но созданный файл jar содержит только папку META-INF и не содержит файлов классов.

Я следовал руководству по https://github.com/bintray/gradle-bintray-plugin#readme но никак не могу заставить его работать.

Вот как выглядит мой файл gradle.

 buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

plugins {
    id "com.jfrog.bintray" version "1.7"
}

apply plugin: 'maven-publish'
apply plugin: 'java'

allprojects {
    repositories {
        jcenter()
    }
}

publishing {
    publications {
        MyPublication(MavenPublication) {
            from components.java
            groupId ''
            artifactId ''
            version '1.0'
        }
    }
}

bintray {
    user = ''
    key = ''
    publications = ['MyPublication']
    pkg {
        repo = 'maven'
        name = ''
        desc = ''
        licenses = ['Apache-2.0']
        websiteUrl = ''
        vcsUrl = ''
        version {
            name = '1.0'
            vcsTag = '1.0'
            released = new Date()
            attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
        }
    }
}
  

Затем я запускаю gradlew bintrayUpload, и он загружается в bintray, но файлы jar содержат только папку META-INF, без файлов классов.

Ответ №1:

Мне удалось это исправить. Самым большим отличием было то, что я использовал конфигурации вместо публикаций при переходе на bintray. Ниже приведены файлы gradle, которые я настраиваю для его работы. Затем просто запустите gradlew bintrayUpload. Я получил несколько сообщений об ошибках, которые мне не удалось исправить, но их не нужно было исправлять, поскольку загрузка все равно работала.

в корневом build.gradle

 plugins {
    id "com.jfrog.bintray" version "1.7"
    id "com.github.dcendents.android-maven" version "1.5"
}
  

в конце файла mylib.gradle

 // bintrayUpload config
apply from: 'bintray-publish.gradle'
  

bintray-publish.gradle

 apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

// Maven group id and version for the artifact
group = LIB_GROUP_ID
version = LIB_VERSION

install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging POM_PACKAGING
                groupId LIB_GROUP_ID
                artifactId LIB_ARTIFACT_ID

                name LIB_NAME
                description LIB_DESCRIPTION
                url LIB_URL

                developers {
                    developer {
                        id POM_DEVELOPER_ID
                        name POM_DEVELOPER_NAME
                    }
                }

                scm {
                    url POM_SCM_URL
                    connection POM_SCM_CONNECTION
                    developerConnection POM_SCM_DEV_CONNECTION
                }

                licenses {
                    license {
                        name POM_LICENCE_NAME
                        url POM_LICENCE_URL
                        distribution POM_LICENCE_DIST
                    }
                }
            }
        }
    }
}

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

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath  = project.files(android.getBootClasspath().join(File.pathSeparator))
}

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

artifacts {
    // TODO: Java doc generates errors for some reason, disable for now
    //archives javadocJar
    archives sourcesJar
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {
    user = POM_DEVELOPER_ID
    key = properties.getProperty("bintray.apikey")

    configurations = ['archives']
    pkg {
        repo = 'maven'
        name = BIN_TRAY_NAME
        desc = LIB_DESCRIPTION
        licenses = ['Apache-2.0']
        websiteUrl = LIB_URL
        vcsUrl = LIB_VCS_URL
        publish = true
        dryRun = false
        version {
            name = LIB_VERSION
            desc = LIB_DESCRIPTION
            released  = new Date()
        }
    }
}
  

gradle.properties

 BIN_TRAY_NAME = MyLib
LIB_VERSION = 1.0.0
LIB_GROUP_ID = com.xxx.mylib

# The artifact name should be the same as the library module name
LIB_ARTIFACT_ID = mylib

LIB_NAME = MyLib
LIB_DESCRIPTION = My desc
LIB_URL = https://github.com/xxx/mylib
LIB_VCS_URL = https://github.com/xxx/mylib.git

POM_DEVELOPER_ID = My bintray id
POM_DEVELOPER_NAME = My bintray name
POM_SCM_URL = scm:git@github.com/xxx/mylib.git
POM_SCM_CONNECTION = scm:git@github.com/xxx/mylib.git
POM_SCM_DEV_CONNECTION = scm:git@github.com/xxx/mylib.git
POM_LICENCE_NAME = The Apache Software License, Version 2.0
POM_LICENCE_URL = http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_PACKAGING = aar
  

Комментарии:

1. Вы спасаете мой день.