Google Cloud Storage에 Maven Inhouse Repository 구축
소개
Google Cloud Storage (이하 GCS) 위에 Maven 인하우스 리포지토리를 구축하여 이용하는 방법의 정리입니다.
문서에 쓰고 있는 것의 2번 달콤한 느낌도 합니다만, 인하우스 리포지토리의 만드는 방법이나, 만든 후의 jar 파일의 전송 방법으로부터 사용 방법까지 종합적으로 정리해 있는 기사가 보이지 않았으므로, 비망록으로서 떠난다.
덧붙여서 자신은 Gradle 사용자이므로 Gradle을 사용했을 경우의 방법에 대해 정리하고 있습니다.
구축 방법 및 사용법
Gradle 문서
공식 문서는 여기
덧붙여서 릴리스 노트 에 따르면 버전 4.2에서 추가된 기능인 것 같습니다.
상당히 전부터 있었군요, 몰랐습니다・・・.
인하우스 리포지토리 구축
명령을 치고 버킷을 만드십시오.
$ BUCKET_NAME='your-inhouse-repository'
$ gsutil mb -c standard -l asia-northeast1 gs://${BUCKET_NAME}
자신 혼자 작업하는 분에는 이것만으로 OK입니다.
여러 사람이 개발하는 경우 개발자에게 버킷에 대한 액세스 권한을 부여하십시오.
아래, 버킷 이름은
your-inhouse-repository
이며 그 아래에 Maven용 경로 maven
를 끊고 Gradle에서는 gcs://your-inhouse-repository/maven
를 참조하는 전제로 이야기를 진행합니다.인증 방법
인하우스 리포지토리이므로 외부에는 공개하지 않습니다.
버킷에 대한 권한이 있는 계정만 액세스할 수 있도록 인증을 하지만 문서에 이 문서가 포함되어 있습니다.
When using a Google Cloud Storage backed repository default application credentials will be used with no further configuration required
「어플리케이션의 디폴트의 인증 정보」란 무엇인가? 라는 느낌입니다만, 아무래도 그런 개념이 있는 것 같습니다.
GCP에서는 ADC이라고 합니다.
로컬에서 작업할 때는
gcloud init
하고 gcloud auth application-default login
를 실시하면 OK입니다.그래서 ADC와 야가 적절한 장소에 배치되고 그 뒤는 Gradle이 마음대로 그것을 사용해 인증해 줍니다.
$ gcloud init
$ gcloud auth application-default login
jar 파일 업로드
라이브러리 측의 샘플 코드입니다.
Maven Publish 플러그인 을 사용하여 jar 파일을 업로드할 수 있습니다.
build.gradle
plugins {
id 'java-library'
id 'maven-publish'
}
group = 'your.libs'
version = '1.0.0'
publishing {
publications {
maven(MavenPublication) {
from components.java
}
}
repositories {
// アップロード先としてインハウスリポジトリを指定する。
maven {
url 'gcs://your-inhouse-repository/maven'
}
}
}
settings.gradle
rootProject.name = 'example-library'
$ gradle publish
jar 파일 사용
라이브러리를 사용하는 측의 샘플 코드입니다.
repositories
에 참조된 인하우스 리포지토리를 추가하고 dependencies
에 종속성을 정의하기만 하면 됩니다.build.gradle
repositories {
// 参照先としてインハウスリポジトリを追加する。
maven {
url 'gcs://your-inhouse-repository/maven'
}
}
dependencies {
// ライブラリを依存関係として追加する。
implementation 'your.libs:example-library:1.0.0'
}
자격 증명이 전환되지 않을 때 Tips
자신은 GCP의 계정을 개인용 및 업무용으로 복수 소지하고 있습니다만,
gcloud init
, gcloud auth application-default login
조우・・・.원인을 모르고 하루 정도 낭비했습니다.
알고 버리면 간단합니다만, 원인은 Gradle의 데몬이 기동하고 있어 그것이 낡은 자격 증명을 잡은 채로 있었습니다.
그래서 데몬을 한 번 정지하면, 그 후에는 전환한 후의 인증 정보를 사용해 줍니다.
$ gradle --stop
혹은 데몬을 사용하지 않도록 명시적으로 지시하면, 현재의 인증 정보를 참조해 줍니다.
$ gradle <some_task> --no-daemon
여담
2020년 7월 25일 현재, 빌드 아티팩트의 관리에 특화한 Artifact Registry 라는 서비스가 β판으로 공개되고 있습니다.
Maven 저장소 로서도 사용할 수 있는 것 같습니다만, 이쪽은 아직 α판과 같은 것이므로 앞으로가 즐거움이라고 하는 곳이군요.
Reference
이 문제에 관하여(Google Cloud Storage에 Maven Inhouse Repository 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jkff-mv/items/847ff62c49bd651f91a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)