Table of Contents
내부망에서 Nexus Repository 사용하기 (gradle 프로젝트)
여기 를 참조하여 Nexus 가 설치되어 있는 것으로 가정합니다.
주의사항(gradle 프로젝트)
maven 프로젝트는 외부망에 접속해서 빌드하면,
~/.m2/repository 에 의존성이 깔끔하게 다운받아집니다.
하지만 gradle 프로젝트는 이상한 파일형식으로 캐시가 이루어지기에,
동일한 방법으로 복사해 올 수 없습니다.
따라서 아래 방식으로 의존성을 다운받아야 합니다.
-
gradle 프로젝트 빌드하기
이렇게 해서 gradle-wrapper.jar 를 프로젝트에 추가시킵니다.
gradle 자체가 없으면 빌드를 할 수 없습니다. -
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
}
}
}
완전 폐쇄망인 경우
작업흐름
- 외부망에서 프로젝트를 실행시키고 라이브러리를 다운받는다.
- ~/.m2/repository 폴더를 압축해 내부망으로 반입한다.
- 아래 스크립트를 실행해서 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 를 실행해서 넥서스 서버에 업로드한다.