Github Package?
Github Package는 Github에서 출시한 소프트웨어 패키지 호스팅 서비스로, 이를 이용하면 프라이빗 라이브러리를 jitpack
이나 jcenter
등 다른 서비스에 의존하지 않고 호스팅 할 수 있다. 원래는 MyMavenRepository를 이용하고 있었지만, 소스코드와 다소 떨어져있기도 하고 회사에서 사용하려니 계정 정보 공유 시에도 불편함이 있어서 Github Package로 옮기게 되었다.
요금은 퍼블릭은 무료, 프라이빗인 경우에는 스토리지와 월별데이터 전송량에 따라 부과된다.
# 배포 방법
1. Personal Access Token 생성
https://github.com/settings/personal-access-tokens/new
Tokens (Classic) 기준으로 아래 권한들을 부여한 Personal Access Token을 생성한다.
2. Token 적용
라이브러리 프로젝트에 github.properties
파일을 생성하고 다음 정보를 넣습니다. local.properties
와 마찬가지로 설정 정보이므로 .gititnore
에 추가해두었습니다.
url=https://maven.pkg.github.com/<repo owner>/<repo name>
username=<username>
token=<github personal access token>
3. 배포 설정
Github Package를 통해 만들어진 Maven Repository 주소는 다음 패턴을 가지게 된다.
https://maven.pkg.github.com/<repository owner>/<repository>
따라서 build.gradle
설정도 다음과 같이 해준다.
afterEvaluate {
publishing {
repositories {
maven {
val props = Properties()
props.load(rootProject.file("github.properties").inputStream())
url = uri(props.getProperty("url"))
credentials {
username = props.getProperty("username")
password = props.getProperty("token")
}
}
}
publications {
create<MavenPublication>("release") {
groupId = "com.your.library"
artifactId = "awesome"
version = libs.versions.sdk.version.get().toString()
from(components["release"])
}
}
}
}
4. 빌드
./gradlew clean assembleRelease
./gradlew publish
아티팩트를 빌드하고 publish
까지 하게되면 Github Repository 화면 오른쪽에 Package가 업데이트 된 것을 볼 수 있다.
# 라이브러리 사용 방법
이제 사용하려는 안드로이드 프로젝트 측면에서 설정이 필요하다.
1. local.properties 설정
퍼블릭 라이브러리의 경우 username과 token이 필요하지 않으므로 1번 과정을 스킵하고, URL만 제대로 적어주면된다. 배포 과정에서 구성했었던 github.properties를 그대로 가져다 써도 된다.
url=https://maven.pkg.github.com/<repo owner>/<repo name>
username=<my github id>
token=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxx
2. repository URL 설정
설정한 속성값을 바탕으로 Maven Repository를 추가시켜 준다.
repositories {
google()
mavenCentral()
jcenter()
...
// My Awesome Library
maven {
val props = Properties()
props.load(File("local.properties").inputStream())
url = uri(props.getProperty("url"))
credentials {
username = props.getProperty("username")
password = props.getProperty("token")
}
}
}
3. 종속성 추가
이제 방금 만든 라이브러리에 대한 종속성을 추가해주면 끝!
implementation("com.your.library.awsome:0.1")
참고자료
https://docs.github.com/ko/packages/learn-github-packages/introduction-to-github-packages
'프로그래밍 > Android' 카테고리의 다른 글
Emulator 루팅 방법 (0) | 2024.11.27 |
---|---|
[안드로이드] IllegalStateException: Storage for [...] is already registered 오류 해결방법 (0) | 2024.10.27 |
[Compose] 빨간 점 시스템 만들기 (1) | 2024.10.20 |
ManifestPlaceholder : 매니페스트에서 빌드 변수 사용하기 (1) | 2024.10.09 |
Android Room은 어떻게 Flow를 지원할 수 있었을까? (0) | 2024.09.14 |