问题一
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 'regexpp@qq.com' //填写开发者的一些基本信息
}
}
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中有两个文件,以为成功了。实际上并没有。成功后文件如下: