Nexus Maven Configuration

2019/08/03 15:19

1. Nexus Maven Repository를 이용하여 Build

  1. Project의 POM 파일(pom.xml)에 Repository 정보 추가

    <repositories> <repository> <id>sw-central</id> <name>Central Repository</name> <url>{Nexus Server Repository Address}</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories>
  2. Project의 POM 파일(pom.xml)에 Plugin Repository 정보 추가

    <pluginRepositories> <pluginRepository> <id>sw-central</id> <name>Central Repository</name> <url>{Nexus Server Repository Address}</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories>
  3. 설정 완료한 Maven Project Build
    IDE 도구에서 프로젝트를 빌드하거나, VSCode Terminal에서 다음과 같이 실행합니다.

    mvn clean package

    만약 Dependency Library들을 하나의 폴더에 모으고 싶다면 다음과 같이 maven 명령을 실행합니다.

    mvn clean dependency:copy-dependencies package

2. Nexus Maven Repository에 Library 배포

프로젝트 내 다른 개발자의 라이브러리를 참조해야 하거나, 내가 개발한 라이브러리를 다른 개발자들이 참조하여 개발해야 하는 경우가 발생할 수 있습니다.
그런 경우에도, Nexus Repository를 활용하여 라이브러리를 배포할 수 있습니다.
하지만, Nexus Maven Repository에 로컬에서 빌드한 Library를 배포하는 경우에는 다음 사항에 유의해야 합니다.

releasesnapshot을 구분해야 합니다.

  • release : 정식 배포용. 동일한 버전에 대해 재배포 불가
  • snapshot : 개발 및 테스트용. 동일 버전 재배포 가능
    pom.xml 파일 내 [version] 태그의 버전 명에 "SNAPSHOT"이 있으면 snapshot repository로 배포합니다.
  1. Nexus Maven 접근을 위해서 User ID/Password 설정
    Nexus 서버 관리자에게 Nexus 서버에 접근할 수 있는 계정 생성을 신청합니다.
    그 후, 로컬 Maven 저장소로 이동하여 settings.xml 파일을 생성합니다.
    로컬 Maven 저장소는 Terminal에서 다음과 같이 찾을 수 있습니다.

    cd ~/.m2 pwd

    Terminal에서 직접 settings.xml을 생성할 수도 있습니다.

    New-Item -Path C:\Users\USER\.m2\settings.xml -ItemType file -Value "<settings></settings>"

    windows 10 powershell 기준입니다.

    생성된 settings.xml 파일에 생성된 Nexus 서버 계정을 다음과 같이 추가합니다.

    <settings> <servers> <server> <id>sw-central</id> <username>{username}</username> <password>{password}</password> </server> </servers> </settings>

    settings.xml 파일 내 server id는 Project 내 pom.xml 파일의 Repository id와 동일해야 합니다.

  2. 로컬 개발 PC 환경 설정

    로컬 개발 PC에서 외부 https를 호출할 경우, 오류가 발생할 수 있습니다. (개발 망 이슈)

    ex) https://repo.maven.apache.org

    따라서, 이런 경우 Default로 설정되어 있는 Public Maven Central 환경을 disable시켜야 합니다.

    프로젝트의 POM 파일(pom.xml)에 다음 내용을 추가합니다.

    <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2/</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> </repositories>
  3. Project의 POM 파일(pom.xml)에 Distribution Management Repository 정보 추가

    <distributionManagement> <repository> <id>sw-central</id> <name>release repository</name> <url>{Nexus Server Release Repository Address}</url> </repository> <snapshotRepository> <id>sw-central</id> <name>snapshot repository</name> <url>{Nexus Server Snapshot Repository Address}</url> </snapshotRepository> </distributionManagement>
  4. Maven Build를 통해서 배포
    다음과 같이 Nexus 서버에 Library를 배포합니다.
    mvn deploy

3. Local Repository(로컬 파일 시스템 내에 있는 라이브러리) 추가

로컬에 있는 라이브러리들이 있는 폴더, 즉 Local Repository는 다음과 같이 POM 파일(pom.xml)에 추가할 수 있습니다.

<repositories> <repository> <id>local-com</id> <url>file://${basedir}/src/main/resources/lib/</url> </repository> </repositories>

Git Configuration

2019/08/03 15:16

Git Client Install on Local PC

1. Git Client 다운로드
로컬 개발자 PC OS에 맞는 git client를 다운로드 합니다.
ex) Windows Git Client Download : https://git-scm.com/downloads/win

2. Git Client 설치
다운로드한 Git Client를 설치합니다.
(Windows 10 64bit 기준)

  1. 다운로드받은 Git-2.22.0-64-bit.exe 설치 (Next 버튼만 클릭!)
  2. 설치 완료 후, Powershell에서 확인
    git --version > result : git version 2.22.0.windows.1

3. Git 최초 설정
Git 설치 이후, 설치된 Git에 최초 설정을 진행합니다.
최초 한번만 설정해 주면 됩니다.

  1. 로컬 사용자 정보 설정
    git config --global user.name "username" git config --global user.email useremail

    user.name과 user.email은 gitlab 서버에 로그인 할 때 사용하는 username과 email 주소입니다.

  2. Git 설정 정보 확인
    git config --list # 전체 설정 정보 확인 git config user.name # 사용자 이름 정보 확인 git config user.email # 사용자 이메일 정보 확인
  3. Git Command 도움말 확인
    git config -h # config에 대한 도움말을 Terminal에서 확인 git help config # config에 대한 도움말을 웹페이지로 확인

4. 로컬 Git 저장소 설정
로컬에 Git 저장소를 설정하는 방법은 2가지가 있습니다.

  • 아직 버전관리를 하지 않는 로컬 디렉토리 하나를 선택해서 Git 저장소 적용 (ex. 프로젝트 폴더)
  • 원격 서버에서 Git 저장소를 Clone

로컬 디렉토리 하나를 선택하는 방법은 다음과 같습니다.

mkdir project_root # Project 폴더 생성 cd project_root # Project 폴더로 이동 git init # git 초기화

원격 서버에서 Git 저장소를 다음과 같이 Clone할 수 있습니다. (복제)

git clone git@10.217.66.21:{username}/{project}.git # 내부 개발자 PC에서 Clone git clone http://211.252.123.38/{username}/{project}.git # 외부 개발자 PC에서 Clone

Project Clone을 위한 주소는 Gitlab 서버에서 Project를 클릭했을 경우, 오른쪽 상단에 [Clone] 메뉴가 있습니다.

로컬 Git 사용

로컬에 설정되어 있는 저장소에 새로운 파일을 추가하거나 기존 파일을 수정할 수 있습니다.

  1. Visual Studio Code에서 왼쪽 상단 메뉴인 File > Open Folder 메뉴를 선택하여 위에서 생성한 project_root 폴더를 선택합니다.

  2. File > New File 메뉴를 선택하여 새로운 파일을 생성합니다.

  3. 파일에 간단한 java 코드를 작성하고, sample.java로 저장합니다.

  4. Visual Studio Code의 상단 오른쪽 두번째 메뉴인 Terminal > New Terminal을 선택합니다.

  5. 4번의 결과로 하단에 Windows Powershell Terminal이 생성됩니다.

  6. Powershell Terminal에서 로컬 Git 저장소에 추가할 파일을 조회합니다.

    git status # git 저장소에 추가해야할 파일 목록 조회(untracked files). 여기서는 위에서 저장한 sample.java 파일 git add ./sample.java # git 저장소에 반영되기 전, Staged 단계로 sample.java 추가 git commit -m "Sample Java Source Code Commit" # -m 옵션은 Commit 메시지 추가하는 옵션
  7. 새롭게 작성한 소스 코드를 위와 같은 방법으로 계속해서 추가합니다.

  8. commit한 히스토리를 조회할 수 있습니다.

    git log # commit한 사용자 이력 조회 git log --stat # 각 commit의 통계 정보 조회
  9. 과거로 되돌리고 싶을 때 (undo) 다음과 같이 되돌릴 수 있습니다.

    git commit --amend

    한 번 되돌리면 복구가 안 되므로, 신중해야 합니다.

원격 Git 서버 사용

소스 코드를 신규로 작성하거나 수정하여 로컬 Git 저장소에 Commit을 완료한 후, 원격 Gitlab 서버에 반영해야 합니다. 원격 Gitlab 서버는 다음과 같은 순서로 사용할 수 있습니다.

  1. 원격 저장소 확인
    원격 저장소를 Clone하면 'origin'이라는 이름으로 원격 저장소가 자동 등록됩니다.

    git remote # 현재 프로젝트에 등록된 원격 저장소 : origin

    원격 저장소 주소를 함께 확인하고 싶을 경우, -v 옵션으로 조회합니다.

    git remote -v > result origin http://211.252.123.38/{username}/{project}.git (fetch) origin http://211.252.123.38/{username}/{project}.git (push)
  2. 원격 저장소 추가
    다음과 같이 원격 저장소를 신규로 추가하거나 삭제할 수 있습니다.

    git remote add {remote name} {address} # name : 원격 저장소를 나타내는 이름, address : 원격 저장소 주소 git remote add other git@10.217.66.21:{username}/{project} git remote -v git remote remove {remote name} # 원격 저장소를 삭제하는 경우
  3. 원격 저장소 사용
    원격 저장소를 사용하는 git command는 다음과 같습니다.

    git fetch {remote name} # 마지막으로 가져온 이후, 변경된 소스코드 가져오는 경우 git pull {remote name} # 원격 저장소에서 모두 가져오고, 현재의 로컬 소스와 Merge시킴 git push {remote name} {branch name} # 수정된 소스 코드를 원격 저장소에 반영 > ex) git push origin master

About Git Tag

2019/08/03 14:42

Git Tag

아래 내용은 Git Book V2를 참고하여 작성했습니다.
Git Tag에 대한 자세한 내용은 Git Book을 참고하세요.

태그는 일반적으로 제품의 Release 계획에 사용됩니다.
제품에 명시되어 있는 버전 정보가 바로 Release에 사용된 태그입니다.
Git Tag Command 사용 방법은 다음과 같습니다.

Tag 조회

이미 만들어진 태그가 있는지 다음과 같이 조회할 수 있습니다.

git tag -l

특정 문자열을 포함하고 있는 Tag를 조회할 경우에는 다음과 같이 조회합니다.

git tag -l "v.1.*"

Tag 추가

Git의 태그에는 Annotated Tag 와 Lightweight Tag 2가지 종류가 있습니다.

Annotated Tag

Annotated Tag는 Git Database에 태그를 만드는 사람의 이름, 이메일, 태그 생성 일자, 태그 메시지 등을 저장합니다. GPG(GNU Private Guard)로 서명할 수도 있습니다.
일반적으로, Annotated Tag를 사용하여 모든 정보를 저장하는 것이 좋습니다.
Annotated Tag는 -a를 추가하여 다음과 같이 사용할 수 있습니다.

git tag -a v1.4 -m "version 1.4 tag"

-m 옵션을 통해서 메시지를 함께 저장할 수 있습니다.

다음과 같이 git show를 이용하여 Tag 정보와 Commit 정보를 모두 확인할 수도 있습니다.

git show v1.4

Lightweight Tag

Lightweight Tag는 Git의 Branch와 비슷합니다.
하지만, Branch와는 다르게 가리키는 지점을 최신 commit 위치로 이동시키지 않습니다.
단순히 특정 commit에 대해 가리키는 포인터 역할을 하며 파일에 commit checksum을 저장하는 것 뿐입니다.
Lightweight Tag는 -a, -s, -m 옵션을 사용하지 않고, 단지 이름만 붙입니다.

git tag v1.4-test

git show를 이용하여 commit 정보를 확인할 수 있습니다.

기존 commit에 대한 Tag 추가

예전에 개발하여 commit한 소스 코드에 대해서도 나중에 tag를 추가할 수 있습니다.
다음과 같은 순서로 기존 commit에 tag를 추가합니다.

  1. commit history 조회

    git log --pretty=oneline
  2. 특정 commit에 tag 추가
    tag 추가 명령의 끝에 checksum을 명시합니다.

    git tag -a v.1.0 checksum -m "added comment"

    checksum은 긴 checksum을 모두 적지 않고 앞자리 일부만 명시합니다.

  3. Tag 확인

    git tag # tag list 조회 git show v.1.0 # tag를 추가한 commit 조회

Tag 공유

git push 명령은 자동으로 tag 정보를 원격 저장소에 전송하지 않습니다.
branch를 공유하는 방법과 동일하게 tag는 별도로 원격 저장소에 push해야 합니다.

다음과 같이 수행할 수 있습니다.

git push {remote name} {tag name} > ex) git push origin test

--tags 옵션을 추가하여 원격 저장소에 없는 모든 tag들을 한 번에 전송할 수 있습니다.

git push origin --tags

향후, 다른 개발자가 원격 저장소에서 해당 프로젝트를 git pull하거나 git clone하는 경우 tag까지 모두 받을 수 있습니다.

Tag Checkout

특정 버전을 명시한 Tag가 붙어 있는 파일만을 checkout하여 확인하고 싶을 경우, 다음과 같이 실행할 수 있습니다.

git checkout v1.2

tag를 git checkout하는 경우, "detached HEAD" 상태가 되어 기존 branch에서 떨어져 나오게 됩니다.
이후 일부 git 작업이 기존 branch와 다르게 동작할 수 있습니다.
따라서, checkout한 상태에서 새로 작성한 commit이 의미가 있게 하기 위해서는 반드시 별도의 branch로 작업하는 것이 좋습니다.