将Bintray存储库链接到Jcenter,“包装应包括货源作为包装的一部分”

问题描述 投票:0回答:1

我将我的android aar库上载到一个二进制仓库回购,并且我试图将我的回购链接到Jcenter,以便其他人可以将其导入到他们的项目中。

当我单击二进制托盘中的Add to Jcenter按钮时,我被带到Compose message页面,除了单击Send按钮之外,我在此页面上没有任何操作。当我单击按钮时,bintray中出现n条错误消息,提示

无法发送消息:软件包应包括来源,作为包装

这是我的图书馆的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'

task androidJavadocs(type: Javadoc) {
    failOnError = false
    source = android.sourceSets.main.java.srcDirs
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
    exclude '**/R.html', '**/R.*.html', '**/index.html'
}

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

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

publishing {
    publications {
        Production(MavenPublication) {

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

            artifact androidJavadocsJar
            artifact androidSourcesJar

            //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 = true
    publish = true
    pkg {
        repo = 'MLCamera'
        name = project.name
        userOrg = 'tyczj359'
        licenses = ['Apache-2.0']
        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'

}

谁能告诉我这是什么问题吗?

android bintray jcenter
1个回答
0
投票

Bintray具有链接到Jcenter的一些前提条件。有些是您需要public Maven存储库,sources文件,pom文件等(更多信息可以在JFrog的wiki中找到)。如果要Link to Jcenter,则需要上传这些文件。

build.gradle中,您明确上传了.aar,还上传了androidSourcesJar

build.gradle文件开始看起来像您正在添加sources,如果收集文件有任何问题,您应该看到error message

我的建议是更改from的顺序:

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

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

publishing {
    publications {
        Production(MavenPublication) {
            artifact androidJavadocsJar
            artifact androidSourcesJar
            groupId 'com.tycz'
            artifactId 'mlcamera'
            version '0.1.0'
            .
            .
            .

您可以通过示例跟随gradle-bintray-plugin README

请参阅workaround中有关Android pom文件依赖性的部分。

您也可以使用这些指南:

© www.soinside.com 2019 - 2024. All rights reserved.