开源库发布到Bintray
每个开发者都会封装一些开源库,或者给自己封装一些自用的工具库
那么我们有两个仓库可选择:
- maven { url “https://jitpack.io” }
- jcenter()
这里我选择 jcenter() ,因为studio项目默认库就是它。接下来我们把项目发布到 jcenter()仓库里 它在Bintray网站里。
准备工作
- AndroidStudio、Gradle和自己的开源项目。(必须有)
- Jcenter是Bintray下的一个仓库,所以Bintray帐号必须的。
- 网络必须是畅通的,要能访问 https://bintray.com
Studio 、 Gradle 应该都会有吧!开源项目或许有些人还不会。就说一下咯
- 创建一个项目 (例如:sampleDemo)
- 创建一个Library (例如:Log)
这里切换项目到Android项目模式下 会看到生成三个 build.gradle
- build.gradle(Project sampleDemo)【这里sampleDemo是你项目名 是项目Gradle】
- build.gradle(Module:app)【这个是你的app Gradle】
- build.gradle(Module:Log)【这个是Library库名 是library的Gradle】
修改项目Gralde【build.gradle(Project sampleDemo)】
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
// 开源到bintray.com添加
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
修改Library Gradle【build.gradle(Module:Log)】
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
android {
compileSdkVersion 28
}
// 项目引用的版本号
version = "1.0.0"
// 定义两个连接(这里的连接是github的)【需要更改】
def siteUrl = 'https://github.com/Townwang/Log' // 项目主页。
def gitUrl = 'git@github.com:Townwang/Log.git' // Git仓库的url。
// 唯一包名 【需要更改】
group = "com.townwang"
install {
repositories.mavenInstaller {
// 生成pom.xml和参数
pom {
project {
packaging 'aar'
// 项目描述 【需要更改】
name 'Log For Android'// 可选,项目名称。
description 'Breaking android log word limits and automatically formatting json.'// 可选,项目描述。
url siteUrl // 项目主页
// 软件开源协议(无需更改)
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
//开发者基本信息 【需要更改】
developers {
developer {
id 'townwang' // 开发者的id。
name 'Townwang' // 开发者名字。
email 'android@townwang.com' // 开发者邮箱。
}
}
// SCM(无需更改,上面定义了)
scm {
connection gitUrl // Git仓库地址。
developerConnection gitUrl // Git仓库地址。
url siteUrl // 项目主页。
}
}
}
}
}
// 生成jar包的task(无需更改)
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
// 生成jarDoc的task(无需更改)
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
// destinationDir = file("../javadoc/")
failOnError false // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。
}
// 生成javaDoc的jar(无需更改)
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user") // Bintray的用户名。
key = properties.getProperty("bintray.apikey") // Bintray刚才保存的ApiKey。
configurations = ['archives']
pkg {
repo = "Log" // 上传到maven库。(这里填改成你创建的仓库的名字。)
name = "logutils" // 发布到Bintray上的项目名字(就是library)
userOrg = user // Bintray的用户名
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true // 是否是公开项目(true 公开 false 不公开)
}
}
修改完毕后 准备发布吧!
运行gradle命令来发布
gradle install
gradle Bintray
执行完毕这两条命令即可
发布成功之后需要 Add to Jcetner 让管理员审核 【审核通过会有右键通知你】
使用方法
一切准备就绪后:
implementation '你的包名:你的Libray名:你的版本号'
例如:
implementation 'com.townwang:logutils:1.0.0'
推荐环节
开源了几个东东