ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 사내 저장소 Nexus 3.x 활용하기
    개발환경 2018. 8. 3. 19:54



    이글은 아래 링크를 통해 많은 도움을 받아 작성되었음을 밝힌다. 

    https://blog.kingbbode.com/posts/nexus-3xx-maven-npm 


    사내에서는 이미 (2016.01)에  nexus 2.x 버젼을 사용하여  maven 저장소로서의 역할로  jar 파일을  공유하고 잘 사용하고 있다. 


    그런데 3.x 버젼은  maven 외에도   npm ,  docker 등 여러가지 저장소로도 활용가능하다고 한다. 


    하지만 난 여전히 maven 저장소로서의 역할이 필요할 뿐이라 그냥 알아만 두는 걸로 ... (-_- )a.. 


    우선 설치를 위해 sonatype 사이트로 이동한다. 


    다운로드

    그리고 


    https://help.sonatype.com/repomanager3/installation


    여기에서 안내하고 있는 것처럼 

    1. jdk 설치 


    2.  latest-unix.tar.gz 를    가이드 하고 있는것처럼 /opt 에  압축을 푼다. 

    그럼 위와 같이 2개 디렉토리가 생기고   난 nexus 로  심볼릭 링크를 걸었다. 


    3.  서비스 등록 

    https://help.sonatype.com/repomanager3/installation/run-as-a-service

    아래 파일을 열어서 jdk 홈 디렉토리를 설정해준다. 

    # vim /opt/nexus/bin/nexus

    INSTALL4J_JAVA_HOME_OVERRIDE=/usr/local/java/jdk


    /etc/init.d디렉토리에 아래와 같이 링크를 만들어준다. 

    ln -s /opt/nexus/bin/nexus /etc/init.d/nexus

    그리고 서비스 등록




    위에서 가이드 하는데로 하는데 잘 안됐다. ㅠㅠ 


    암튼 현재는 /opt/nexus/bin 아래에 있는 nexus 실행 파일 을 통해 실행     #> nexus start 


    기본 포트는  8081 이다.  

    http://ip:8081 접속하면 다음과 같이 화면이 보인다. 

    이렇게 하면 설치 끝!


    Docker Private 저장소 생성 

    관리 메뉴에서  Repositories 메뉴로 이동하고 

    "Create repository" 를 선택한다. 


    그리고 "docker(hosted)" 를 선택하고 아래와 같이  저장소 네이밍과 옵션들을 선택하여 생성을 완료한다. 





    라이브러리 저장소


    이제부터는 공통으로 사용할 라이브러리를 만들고 gradle 을 통해서 공유해보자 

    maven 보다는  gradle  장점이 많다고 하니 익숙해지려면 써봐야지.. 


    우선 프로젝트 생성

    위와 같이 그레이들 프로젝트를 선택 (아마 그레이들 프로젝트를 선택하려면 그레이들 플러그인 설치해야했던거 같다) 


    대강 이름 정하고 

    심플하게 그냥 유틸 클래스를 추가해 본다. 


    최초 프로젝트 생성 하고 아무것도 수정하지 않은 상태의 build.gradle 파일이다. 

    apply plugin: 'java-library'


    // cube added 

    apply plugin: 'java'

    apply plugin: 'maven'

    sourceCompatibility = JavaVersion.VERSION_1_8

    targetCompatibility = JavaVersion.VERSION_1_8



    // In this section you declare where to find the dependencies of your project

    repositories {

        // Use jcenter for resolving your dependencies.

        // You can declare any Maven/Ivy/file repository here.

        jcenter()

    }


    dependencies {

        // This dependency is exported to consumers, that is to say found on their compile classpath.

        api 'org.apache.commons:commons-math3:3.6.1'


        // This dependency is used internally, and not exposed to consumers on their own compile classpath.

        implementation 'com.google.guava:guava:23.0'


        // Use JUnit test framework

        testImplementation 'junit:junit:4.12'

    }


    group = "com.cubenuri"

    version ='0.0.1-SNAPSHOT'

    project.group='com.cubenuri'

    uploadArchives {

        repositories {

            mavenDeployer {

            repository(url: 'http:/아이피주소:8081/repository/maven-releases/') 

            { authentication(userName: 'admin', password: 'admin123') } 

           

            snapshotRepository(url: 'http://아이피주:8081/repository/maven-snapshots/') 

            { authentication(userName: 'admin', password: 'admin123') }

        }


        }

    }


    jar 업로드를  위와 같이 수정한다. 


    그레이들빌드를 위해 Run 메뉴의 configuration 으로 이동해서 upload_lib 라는 이름으로 생성하고 "Gradle Tasks" 에 build.gradle 에서 작성한 uploadArchives 로 이름을 준뒤  워크스페이스 버튼을 눌러 현재 작업중인 프로젝르를 선택해준다 


    그럼 퀵런치 런 메뉴에 upload_lib 메뉴가 추가 되고 실행하면 위와 같이 진행된다!  

    에잉! 오류 발생 ㅠㅠ . 

    무슨 메타파일을 못찾겠다는거냐...  그냥 재시도! 


    옹! 이번엔 성공!  머지.. 아무것도 안했는데  첨엔 그냥 오류나는 건가? 


    그래서 실제 넥서스로 확인해보니 위와 같이 확인 음..2개가 보이는거보니 첫번째 올라간것도 성공한것인가? 미스테리구만 



    실제 소스 참고  


    이제 다른 프로젝트에서 해당라이브러리를 활용하려면 

    pom.xml 파일에 

    저장소 추가 하고  아래와 같이 의존성 추가해서 사용할수 있다. 

    <dependency>

    <groupId>com.crizen</groupId>

    <artifactId>cube-util</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    </dependency>










    댓글

Designed by Tistory.