bintray 플러그인이 몇가지 있지만 com.novoda.bintray-release 을 사용하였다.
이렇게 레퍼지토리를 생성하면 배포할 준비는 끝난거다.
우선 직접개발한 라이브러리를 jcenter에 배포하고 사용하려면 github 소스를 public 으로 설정해야 한다.
이유는 나중에 Add Jcenter 했을때 github 주소를 검수하는 듯하다. private 이면 404가 나기 때문에
jcenter배포가 불가능하다.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath "com.novoda:bintray-release:0.9.2"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
gradle 버전과 novoda 버전 호환성도 이슈가 있었다. (gradle 4.x.x 로 했더니 배포가 안되는 버그가 있었음)
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'
version = "0.1.17"
/** Configurations for com.novoda.bintray-release plugin.
*
* This plugin uses https://github.com/bintray/gradle-bintray-plugin internally.
* See https://github.com/novoda/bintray-release/wiki/Configuration-of-the-publish-closure for more
* detail about options in `publish` closure.
*/
publish {
// Required.
bintrayUser = 'james-chun-dev'
bintrayKey = 'Edit Your Profile > API Key'
groupId = 'com.universal.sdk'
publishVersion = version
artifactId = 'universalsdk'
// Optional.
userOrg = 'james-chun-dev'
repoName = 'universal-sdk'
desc = 'The Universal SDK for Android provides a modern way of implementing open APIs.'
issueTracker = 'YOUR_ISSUE_TRACKER_URL'
website = 'https://github.com/james-chun-dev/universal-sdk-android'
repository = 'https://github.com/james-chun-dev/universal-sdk-android'
dryRun = false
override = true
}
/** Add support for syncing to maven central.
*
* This closure synchronizes the POM file that specifies transitive dependencies with the maven
* central.
* See https://github.com/novoda/bintray-release/wiki/Add-support-for-syncing-to-maven-central for
* more detail.
*/
subprojects {
group = this.group
version = this.version
def isUploading = project.getGradle().startParameter.taskNames.any {
it.contains('bintrayUpload')
}
if (isUploading && project.name in [MODULE_NAME]) {
apply plugin: 'maven'
def defaultPomPath = "build/publications/maven/pom-default.xml"
gradle.taskGraph.whenReady { taskGraph ->
taskGraph.getAllTasks().find {
it.path == ":$project.name:generatePomFileForMavenPublication"
}.doLast {
file(defaultPomPath).delete()
// Overriding POM file to make sure we can sync to maven central.
// See https://maven.apache.org/pom.html for more detail about POM.
pom {
project {
name project.publish.artifactId
artifactId project.publish.artifactId
packaging project.name == 'compiler' ? 'jar' : 'aar'
url project.publish.website
version this.version
}
}.writeTo(defaultPomPath)
}
}
}
}
bintrayUser : 콘솔 우측상단에 뜨는 유저이름
bintrayKey : 콘솔 우측상단에 유저이름을 클릭하면 Edit Your Profile > API Key 가면 얻을 수 있다.
groupId : 배포시 사용될 그룹 이름 (나는 라이브러리 패키지 주소와 맞췄다)
publishVersion : 배포시 사용될 버전 이름
artifactId : 배포시 사용될 sdk 이름
<dependency>
<groupId>com.universal.sdk</groupId>
<artifactId>universalsdk</artifactId>
<version>0.1.16</version>
<type>pom</type>
</dependency>
3가지 키값들이 합쳐져서 아래와 같이 사용할 수 있게 된다.
implementation 'com.universal.sdk:universalsdk:0.1.16'
userOrg : bintrayUser 와 동일하게 적어주면 된다.
repoName : 최초에 bintray 콘솔에서 생성한 레퍼지토리 이름
desc : 라이브러리에 대한 설명
issueTracker : 배포시에 크게 중요하진 않은거 같다.
website : 깃허브 주소
repository : 깃허브 주소
dryRun :
override :
subprojects :
bintrayUpload 하면 배포된다. bintray 콘솔창에 가보면 라이브러리가 업로드된 걸 확인할 수 있다.
라이브러리가 정상적으로 배포되면 Add to JCenter 라는 버튼이 활성화될 것이다.
Gihub 프로젝트가 public 이면 검수보내고 몇분뒤에 jcenter 에 배포가 된다.
만약에 소스공개가 어려운 경우엔 이 방법을 쓸 수 있다.
buildscript {
ext.kotlin_version = '1.3.11'
repositories {
google()
jcenter()
maven {
url "https://dl.bintray.com/james-chun-dev/universal-sdk"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
maven {
url "https://dl.bintray.com/james-chun-dev/universal-sdk"
}
}
}
dependencies {
implementation 'com.universal.sdk:universalsdk:0.1.16'
}