이전 글
[Spring] JAVA로 금지어 검사기를 만들어보자
개요웹이나 앱을 개발하다보면 사용자가 입력한 데이터를 검증하는 과정에서 어쩔 수 없이 빼놓는게 금지어였습니다. 왜냐하면 사용할만한 라이브러리가 존재하지 않았기때문입니다. (제가 못
tmd8633.tistory.com
이전 글에서 만들었던 금지어 검사기를 Maven Central Repository에 등록해보겠습니다.
프로젝트 라이브러리화
@Configuration
@ComponentScan("ban.inspector")
public class WordInspectorAutoConfig {
}
이전 프로젝트를 그대로 배포해버리면 @Component 클래스들이 스캔범위 밖으로 벗어나기때문에 @ComponentScan 으로 해당 패키지를 설정해줍니다.
resources 하위에 META-INF 하위에 spring 폴더를 만듭니다.
org.springframework.boot.autoconfigure.AutoConfiguration.imports 라는 이름으로 file을 만듭니다.
위에 파일 안에 @ComponentScan 이 붙은 클래스의 패키지주소를 작성합니다.
이렇게 설정하면 외부라이버리를 Component 로 손 쉽게 사용할 수 있습니다.
Maven Central Repository 등록하기
2024년 3월 12일부터 issues.sonatype.org는 폐쇄되어 모든 등록은 중앙 포털을 통해 이루어지도록 변경되었습니다. 기존 Nexus repository(OSSRH)로 올리는 방식을 사용하던 사용자는 기존 방식을 그대로 사용할 수 있지만, 신규 사용자라면 Maven Central을 통해서 라이브러리를 배포해야 합니다. 따라서 해당 게시글은 2024년 3월 12일 이후 적용되는 중앙포털을 통해 배포하는 방식입니다.
Maven Central Repository
Maven Central Repository는 Maven 프로젝트를 위한 공개 저장소입니다.
우리가 흔히 Maven Repository 에서 라이브러리를 찾아서 사용하는데 Maven Repository 는 라이브러리를 검색하는 곳이고, Maven Central Repository는 실제 파일을 등록하는 곳이라고 생각하시면 됩니다.
Maven Central
Official search by the maintainers of Maven Central Repository.
central.sonatype.com
1. namespace 만들기
회원가입을 하고 상단에 계정을 눌러 View Namespaces 를 눌러 이동합니다.
라이브러리를 github를 통해 배포하신다면 GitHub로 회원가입하는게 편합니다.
저는 github로 배포할것이기때문에 github로 회원가입했습니다.
GitHub로 회원가입을 하시면 github 주소로 자동생성됩니다.
2. GPG 키 생성
중앙 저장소에 라이브러리를 등록하기 위한 키 입니다.
2-1 설치
MAC은 아래 명령어로 설치하시면되고,
$ brew install gnupg
Windows 는
GnuPG - Download
Note that you may also download the GNU Privacy Guard from a mirror site close to you. See our list of mirrors. The table below provides links to the location of the files on the primary server only. These are the canonical release forms of GnuPG. To use t
gnupg.org
여기 들어가서 Gpg4WIn 을 다운받아 설치하시면 됩니다.
설치가 완료되었다면 gpg --version 을 통해 정상적으로 설치되었는지 확인합니다.
2-2 키생성
$ gpg --gen-key
키를 발급하는 과정에서 이름, 이메일, 비밀번호를 요구하는데 양식에 맞춰서 잘 작성하시면 됩니다.
비밀번호는 잊어버리지 않게 메모장에 작성해둡니다.
2-3 생성된 키 확인
$ gpg --list-keys --keyid-format short
[keyboxd]
---------
pub ed25519/85683A34 2024-09-16 [SC] [expires: 2027-09-16]
4520354F3D5C07DEDC90D716DDFE142685683A34
uid [ultimate] xxxxxx Kim <xxxxxx@naver.com>
sub cv25519/23DD4259 2024-09-16 [E] [expires: 2027-09-16]
키가 생성된 것을 확인할 수 있습니다. 여기 ed25519/85683A34 에서 뒤부분 8자리가 key ID가 됩니다.
2-3 Key 등록
$ gpg --keyserver keyserver.ubuntu.com --send-keys 85683A34
맨 뒤 부분에 key ID를 넣어줍니다.
이 세개의 주소중 하나를 선택해서 등록해주시면 됩니다.
2-4 Pgp 파일 생성
$ gpg --export-secret-keys 85683A34 > /Users/user/Desktop/signing.pgp
pgp 파일을 생성할 위치를 뒤에 작성해줍니다.
3. 프로젝트 설정
build.gradle
plugins {
...
id "com.vanniktech.maven.publish" version "0.28.0"
id 'signing' // GPG 서명을 위한 플러그인
}
plugins 안에 com.vanniktech.maven.publish 와 signing 을 추가합니다.
signing {
sign publishing.publications
}
signing 을 추가합니다.
build.gradle 최상단에
import com.vanniktech.maven.publish.SonatypeHost
임포트를 해줍니다.
mavenPublishing {
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
signAllPublications()
coordinates("io.github.kimseungwo", "wordinspector", "0.0.1") // 네임 스페이스, 라이브러리 이름, 버전 순서로 작성
pom {
name = "Maven Repository에 노출될 라이브러리명"
description = "라이브러리 소개글"
inceptionYear = "2024"
url = "<https://github.com/KIMSEUNGWO/BanWordInspector>"
licenses {
license {
name = "The Apache License, Version 2.0"
url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
}
}
developers {
developer {
id = "tmd8633"
name = "이름"
url = "https://github.com/KIMSEUNGWO"
}
}
scm {
connection = 'scm:git:github.com/KIMSEUNGWO/BanWordInspector.git'
developerConnection = 'scm:git:ssh://github.com:KIMSEUNGWO/BanWordInspector.git'
url = '<https://github.com/KIMSEUNGWO/BanWordInspector/tree/main>'
}
}
}
scm 작성법
connection = 'scm:git:github.com/[Github 사용자명]/[오픈소스 Repository 이름].git'
developerConnection = 'scm:git:ssh://github.com/[Github 사용자명]/[오픈소스 Repository 이름].git'
url = 'https://github.com/[Github 사용자명]/[오픈소스 Repository 이름]/tree/[배포 브랜치명]'
Maven Central Repository로 돌아와서 계정 - View Account - Generate User Token 클릭
OK 를 누르고 나온 username 과 password 를 메모장에 적어줍니다.
gradle.properties
mavenCentralUsername=[USER_NAME]
mavenCentralPassword=[USER_PASSWORD]
signing.keyId=[GPG_KEY_ID]
signing.password=[GPG_PASSWORD]
signing.secretKeyRingFile=[PGP_SIGNING_PATH]
프로젝트 루트폴더 내에 gradle.properties 를 생성해줍니다.
USER_NAME = Generate User Token 으로 생성된 username
USER_PASSWORD = Generate User Token 으로 생성된 password
GPG_KEY_ID = 2-3에서 생성된 키의 key Id
GPG_PASSWORD=2-2 키 생성시 등록한 비밀번호
PGP_SIGNING_PATH=2-4에서 생성된 pgp 파일의 절대경로
4. 배포
$ ./gradlew publishAllPublicationsToMavenCentralRepository
배포가 성공했다면
Maven Central Repository - 계정 클릭 - View Namespaces - Deployments 로 이동합니다.
VALIDATED 으로 상태가 변경되었다면 Publish 버튼이 활성화 됩니다. Publish를 눌러줍니다.
그럼 PUBLISHING 으로 변경되는데 수 분후에 PUBLISHED 로 변경되었다면 배포 성공입니다.
Maven Central Repository에서도 검색되고 Maven Repository에서도 검색이 됩니다. 이제 외부 라이브러리로 사용하시면 됩니다.
끝
'일반 > CS' 카테고리의 다른 글
[CS][Spring Security] CORS에 대해서 알아보자 (0) | 2024.12.16 |
---|---|
[CS][Spring Security] CSRF란? (0) | 2024.12.12 |
[CS] MVC 패턴 (0) | 2024.04.17 |
HTTP GET과 POST 차이 (0) | 2024.01.25 |
URI와 URL의 차이점 (Feat : URN) (0) | 2024.01.21 |