Kotlin开源库上传Bintray(Maven)代码库遇到的问题总结

问题一

Could not find method google() for arguments [] on repository container

在Google上找了很多,比如:这个。可能是解决方法之一。
我这里的问题不是因为这个,而是因为项目目录下的gradle/wrapper/gradle-wrapper.properties中的distributionUrl和配置的环境变量不一致导致的。

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

而windows中配置的是3.3的gradle。所以把环境变量替换为相应的版本就好了。

问题二

javadoc: 错误 - 非法的程序包名称: C:\Users\z1994\Desktop\MyLib\slideuplayout\src\main\java\top\iwill\slideuplayout\SlideUpLayout.kt"

这个错误便是kotlin导致的, 因为 Kotlin 文件不能用 javadoc工具来生成 Javadoc, 导致了在执行bintrayUpload任务不能正确build。
解决办法:
集成dokka,即在项目目录下的build.gradle中添加:

 classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.18"

然后在module的build.gradle中添加:

apply plugin: 'org.jetbrains.dokka'

//同时添加三个方法
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
    outputFormat = 'javadoc'
    outputDirectory = javadoc.destinationDir
}
task generateJavadoc(type: Jar, dependsOn: dokkaJavadoc) {
    group = 'jar'
    classifier = 'javadoc'
    from javadoc.destinationDir
}
task generateSourcesJar(type: Jar) {
    group = 'jar'
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

将artifacts便签替换即可

artifacts {
    archives generateJavadoc //javadocJar
    archives generateSourcesJar //sourcesJar
}

完整的module/build.gradle如下:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'org.jetbrains.dokka'

version = "1.0.0" //这里上传到jcenter是版本的控制

android {
    compileSdkVersion 28

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

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

    }

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

}

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

    implementation 'com.android.support:appcompat-v7:28.0.0'
    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'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}


def siteUrl = 'https://github.com/btcw/SlideUpLayout.git'      // 项目的主页(可以写自己的库的GitHub地址)
def gitUrl = 'https://github.com/btcw/SlideUpLayout.git'      // Git仓库的url  这个是说明,可随便填
group = "top.iwill.mylib"  // (**慎重填写**)这里是groupId ,必须填写  一般填你唯一的包名,对应com.squareup.okhttp3:okhttp:3.4.1中的com.squareup.okhttp3部分

install {
    repositories.mavenInstaller {
        pom {
            project {
                packaging 'aar'
                name 'SlideUpLayout'     //项目名字
                url siteUrl
                licenses {
                    license {
                        name 'The CommonUtil Software License, Version 1.0.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id 'btcw'        //填写开发者的一些基本信息
                        name 'Jian Zhou'    //填写开发者的一些基本信息
                        email '[email protected]'   //填写开发者的一些基本信息
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}
task generateSourcesJar(type: Jar) {
    group = 'jar'
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    options.encoding = "UTF-8"
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
    outputFormat = 'javadoc'
    outputDirectory = javadoc.destinationDir
}
task generateJavadoc(type: Jar, dependsOn: dokkaJavadoc) {
    group = 'jar'
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives generateJavadoc //javadocJar
    archives generateSourcesJar //sourcesJar
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user")    //读取 local.properties 文件里面的 bintray.user
    key = properties.getProperty("bintray.apikey")   //读取 local.properties 文件里面的 bintray.apikey
    configurations = ['archives']
    pkg {
        repo = "SlideUpLayout" //(**慎重填写**)这里填写在bintray中自己新建仓库的名字
        name = "SlideUpLayout"    //(**慎重填写**)发布到JCenter上的项目名字,必须填写,对应com.squareup.okhttp3:okhttp:3.4.1中的okhttp
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}
repositories {
    mavenCentral()
}

问题三

Could not create package 'btcw/maven/SlideUpLayout': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]

这个问题是由于pkg下的repo和仓库名称没有对应,没有找到对应的仓库。所以核对仓库名就好了,不是仓库类型,而是仓库名称。而name则是项目的名称。

问题四

点击add To Jcenter 时候提示 Please fix the following before submitting a JCenter inclusion request: Add a POM file to the latest version of your package.

这个问题是由于没有上传Pom.xml文件导致的。我这里应该是网络波动,而没有上传成功,因为在module/build/poms下有pom-default文件.只是在上传失败(readTimeOut)后看repo中有两个文件,以为成功了。实际上并没有。成功后文件如下:


外层

Kotlin开源库上传Bintray(Maven)代码库遇到的问题总结_第1张图片
内层

SlideUpLayout开源库
个人网站

你可能感兴趣的:(Kotlin开源库上传Bintray(Maven)代码库遇到的问题总结)