Free Lines Arrow
본문 바로가기
Development/Nexus

[Nexus] gradle 이용한 라이브러리 nexsus 업로드

by skahn1215 2024. 8. 21.
728x90
반응형

Gradle 를 이용하여 공통코드 관리하기

공통 코드를 빌드하여 jar 파일을 nexus에 업로드 한다. 

이렇게 되면 어떤 프로젝트든 공통코드중복을 없앨수 있으므로 유지보수를 관리할수 있다.

 

Nexsus docker 로 실행하기

docker run -d --name nexus -v nexus:/nexus-data -p 8081:8081 sonatype/nexus3:latest

 

Docker desktop 확인

  • nexus 가 정상적으로 띄어졌으면 아래와 같이 초록색으로 띄워진 컨테이너를 확인 할수있다.

Ne

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

 

GitHub - rnrl1215/nexus-lib: 넥서스 라이브러리 등록

넥서스 라이브러리 등록. Contribute to rnrl1215/nexus-lib development by creating an account on GitHub.

github.com

 

728x90
반응형

'Development > Nexus' 카테고리의 다른 글

[Nexus] Nexus Repository  (0) 2023.01.14

댓글