내부망에서 Nexus Repository 사용하기 (gradle 프로젝트)

By | 2024년 2월 6일
Table of Contents

내부망에서 Nexus Repository 사용하기 (gradle 프로젝트)

여기 를 참조하여 Nexus 가 설치되어 있는 것으로 가정합니다.

주의사항(gradle 프로젝트)

maven 프로젝트는 외부망에 접속해서 빌드하면,
~/.m2/repository 에 의존성이 깔끔하게 다운받아집니다.
하지만 gradle 프로젝트는 이상한 파일형식으로 캐시가 이루어지기에,
동일한 방법으로 복사해 올 수 없습니다.

따라서 아래 방식으로 의존성을 다운받아야 합니다.

  1. gradle 프로젝트 빌드하기

    이렇게 해서 gradle-wrapper.jar 를 프로젝트에 추가시킵니다.
    gradle 자체가 없으면 빌드를 할 수 없습니다.

  2. maven 프로젝트 생성 후 의존성을 다운받습니다.

    이후에 아래 내용으로 진행하면 됩니다.

폐쇠망에서 Nexus 서버만 외부망 접속이 허용된 경우

Nexus3 에는 디폴트로 maven 리포가 설정되어 있으므로 별도의 설정은 필요없습니다.

외부망 접속 설정에 https://repo1.maven.org/maven2/ 를 추가해줍니다.

아래 설정을 수정해 주는 것으로 끝납니다.

~/.gradle/gradle.properties

nexusUsername=nexus
nexusPassword=nexus

build.gradle

repositories {
    // mavenCentral()
    maven {
        url "http://localhost:8081/repository/maven-central/" // Nexus repository url
        allowInsecureProtocol true // http 통신
        // ~/.gradle/gradle.properties should be configured!
        credentials {
            username nexusUsername
            password nexusPassword
        }
    }
}

완전 폐쇄망인 경우

참조

작업흐름

  1. 외부망에서 프로젝트를 실행시키고 라이브러리를 다운받는다.
  2. ~/.m2/repository 폴더를 압축해 내부망으로 반입한다.
  3. 아래 스크립트를 실행해서 Nexus 서버에 업로드 한다.

mavenimport.sh

#!/bin/bash

# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do
    case $opt in
        r) REPO_URL="$OPTARG"
        ;;
        u) USERNAME="$OPTARG"
        ;;
        p) PASSWORD="$OPTARG"
        ;;
    esac
done

find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
./mavenimport.sh -u 넥서스아이디 -p 넥서스비밀번호 -r 넥서스저장소주소

리포 생성

넥서스 리포를 생성해 준다.
type 은 maven2(hosted) 를 선택해 준다.

~/.m2/repository 반입하기

외부망에서 프로젝트를 빌드하고 ~/.m2/repository 를 압축해서 내부망으로 옮겨온다.

넥서스에 업로드

mavenimport.sh 를 실행해서 넥서스 서버에 업로드한다.

답글 남기기