Nexus 활용 2 - 넥서스 리포지토리에서 다운로드

코딩은 많은 시행착오·2024년 7월 14일
0

back-end

목록 보기
13/18
post-thumbnail

전 게시물에서 넥서스 리포지토리에 배포하는 방법에 대해 알아봤다.

넥서스 리포지토리 배포하기

이번에는 다운로드하는 방법에 대해 알아볼 것이다.
프로젝트 github 링크

프로젝트 생성

이번에도 별도의 설정 없이 진행할 예정이지만, log를 확인하기위해 Lombok만 추가해준다.

gradle 세팅

여기서는 로직 구현보다 gradle 세팅을 먼저 한다.
이유는 nexus 리포지토리에서 다운 받아야 그 라이브러리를 활용할 수 있기 때문이다.

// gradle.properties
nexusUsername=admin
nexusPassword=admin // 현재 nexus password

루트 디렉토리에 gradle.properties 파일을 생성한 뒤, id, password를 입력해준다.

//build.gradle
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.1'
    id 'io.spring.dependency-management' version '1.1.5'
}

group = 'hello.example'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
    maven {
        url = uri('http://localhost:8081/repository/maven-releases')
        allowInsecureProtocol = true //http를 사용하기 위해 추가
        credentials{
            username = project.property("nexusUsername")?:""
            password = project.property("nexusPassword")?:""
        }
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    
    // 테스트에서 Lombok 사용을 위한 Lombok 라이브러리 추가
    testImplementation 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
    
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    
    implementation 'hello.example:nexus:1.0.0' // 배포했던 라이브러리 명시. group:artifact:version으로 구성
  
}

tasks.named('test') {
    useJUnitPlatform()
}

이렇게 작성하고 gradle refresh를 해주면 외부 라이브러리에 넥서스에서 다운받은 소스코드가 보일 것이다!

로직 구현

넥서스에서 라이브러리를 다운로드 받았으니 테스트코드를 작성해준다.

참고사항
다운로드받은 라이브러리는 외부 라이브러리로 자동 ComponentScan 대상이 아니다.
프로젝트 내에서 사용하려면 별도의 config 설정을 해줘야 한다.

이부분도 위의 내용을 몰라서 실무에서 잠깐 막혔었는데 자동으로 Bean에 등록되지 않아서 별도로 Bean에 등록해줘야 한다.

@Slf4j
@SpringBootTest
@Import(AddUtils.class) // AddUtils.class 빈 등록
public class NexusTest {

    @Autowired
    AddUtils addUtils;

    @Test
    @DisplayName("AddUtils addAll 메소드가 정상 동작하는지 확인하는 테스트")
    public void nexusTest(){
        //given

        //when
        int result = addUtils.addAll(1, 2, 3, 4, 5);

        //then
        log.info("result={}", result);
        assertThat(result).isEqualTo(15);
    }

}

이렇게 하면 테스트가 정상적으로 수행되는 것을 확인할 수 있다.

결론

이렇게 넥서스 리포지토리를 활용해 배포, 다운로드 하는 방법을 알아봤다.
실무에서 gradle 세팅하는 부분에서 애를 먹긴 했는데 설정을 한번 해주니까 별도로 신경 써야할 부분이 없어서 좋았다.

실무에서는 kotlin으로 로직을 구현했었는데 java 프로젝트와 잘 연동되는 것을 확인했고, 다른 기술들을 사용해 라이브러리를 만들 때 좋을 것 같았다.

일을 할수록 배우는 게 많은 것 같고, 배우는 것도 많지만 앞으로 배울 게 정말 많은 것 같다..
꾸준히 개발해서 기술스택을 넓히고, 필요한 부분에 적절한 기술스택을 사용해 효율적으로 개발하고 싶다!

--끝--

0개의 댓글