728x90
반응형
Gradle 를 이용하여 공통코드 관리하기
공통 코드를 빌드하여 jar 파일을 nexus에 업로드 한다.
이렇게 되면 어떤 프로젝트든 공통코드중복을 없앨수 있으므로 유지보수를 관리할수 있다.
Nexsus docker 로 실행하기
docker run -d --name nexus -v nexus:/nexus-data -p 8081:8081 sonatype/nexus3:latest
Docker desktop 확인
- nexus 가 정상적으로 띄어졌으면 아래와 같이 초록색으로 띄워진 컨테이너를 확인 할수있다.
Nexus 패스워드 확인
- nexsus 도커에 접속하여 아래 파일을 확인해 줍니다.
cd /nexus-data/
cat admin.password
Nexus 접속
Repository 생성
- 기존 maven-snapshots를 이용해줘도 되지만 나중에 관리하기 편하게 따로 생성해 주었습니다.
- 상단 태엽 클릭 왼쪽 탭에 Repositories 클릭
- create repository 클릭
- 아래와 같이 생성
Gradle 작성후 publish
- Credential 의 정보는 따로 yaml 파일을 만들어서 관리하는 걸 추천합니다.
- publish 를 수행해 줍니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.6'
id 'maven-publish'
}
group = 'com.p8lab'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
jar{
enabled=true
archiveClassifier = '' // Classifier 제거
}
publishing {
repositories {
maven {
def releasesRepoUrl ='http://localhost:8081/repository/p8lab-release/'
def snapshotsRepoUrl = 'http://localhost:8081/repository/p8lab-snapshot/'
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
allowInsecureProtocol = true
credentials {
username 'admin'
password 'admin'
}
}
}
publications {
myPublication(MavenPublication) {
groupId = 'com.p8lab'
artifactId = 'common'
version = "0.0.2-SNAPSHOT"
from components.java
versionMapping {
usage('java-api') {
fromResolutionOf('runtimeClasspath')
}
usage('java-runtime') {
fromResolutionResult()
}
}
}
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
Nexus 정상 업로드 확인
- 아래와 같이 배포가 된걸 확인할수 있습니다.
다른 프로젝트에서 가져오기
- 다른 프로젝트에 아래 처럼 레파지토리를 등록하고, 의존성을 추가해 줍니다.
repositories {
mavenCentral()
maven {
url = 'http://localhost:8081/repository/p8lab-snapshot/'
allowInsecureProtocol = true
credentials {
username 'admin'
password 'admin'
}
}
}
dependencies {
implementation 'com.p8lab:common:0.0.2-SNAPSHOT'
}
gradle을 새로고침후 External Libraries 을 보면 라이브러리가 추가 되었습니다.
전체 코드
https://github.com/rnrl1215/nexus-lib
728x90
반응형
'Development > Nexus' 카테고리의 다른 글
[Nexus] Nexus Repository (0) | 2023.01.14 |
---|
댓글