집에 맥, 맥북 , 그리고 윈도우 PC, 서피스 4 PRO, 일반 윈도우 노트북이 있다.
자랑은 아니고;;;;;
전산쟁이 자랑할건 아니다.
단지~ 자바로 이것저것 만들때 여기서 했다 저기서했다 할때
이것들을 소스 형상관리를 통해서도 관리를 할수있겠지만
일단 아예 배포까지 공통에서 관리하고자 넥서스를 설치하기로 한다.
내가 운영하는 Vm중 한곳에 nexus를 설치하고 여기서 관리하기로 한다.
그에대한 기록을 하며 혹시라도 까먹을 자바쪽의 Dog같은 환경설정에 스트레스를 안받기 위함!!!
넥서스 다운로드 경로 : http://www.sonatype.org/nexus/downloads/
다운받을때 보면 2016년 7월 오늘자로 보면 OSS 3.xx가 있었다.
하아~~ 내가 이걸설치를 하고나서 띄우니까 아우~ 이름과 환경이 너무 익숙하지도 않고 난감해서 어떻게든 써보려다 걍 지움.
분명한건 2.X버전보단 이쁘다 ㅡ_ㅡ;;;
다운받을때 다른사람들도 올린 레퍼런스에 마춰서 가려면 2.x버전을 받는것이 덜 머리아플것이다.
3.x버전 아래쪽에 위치 있음.
리눅스에 그냥 풀면끝~
난 모든 위치가 apps다 그래서 그 아래 디렉토리하나 두고 그안에 넣어둠.
[user@localhost nexus]$ ls
bin conf lib LICENSE.txt logs nexus NOTICE.txt tmp
[user@localhost nexus]$ pwd
/apps/nexus
[user@localhost nexus]$
##### bin 디렉토리 안에 보면 nexus 실행파일이 있다. #####
[user@localhost bin]$ ls -al
total 28
drwxr-xr-x. 3 hadoop app 44 Jul 2 23:32 .
drwxr-xr-x. 8 hadoop app 4096 Apr 12 23:11 ..
drwxr-xr-x. 15 hadoop app 4096 Apr 12 23:21 jsw
-rwxr-xr-x. 1 hadoop app 14602 Apr 12 23:11 nexus
-rwxr-xr-x. 1 hadoop app 2339 Apr 12 23:11 nexus.bat
[user@localhost bin]$
#### 그냥 기본값으로 실행하면 ~
[user@localhost bin]$ ./nexus start
Starting Nexus OSS...
Started Nexus OSS.
[user@localhost bin]$
##### 이게 다더라 보면 그냥 netty로 띄우는것 같음;;;; #####
nexus 관리자 화면
이 화면이 보이고 로그인을 하면 각 메뉴별로 등록/수정/삭제가 활성화된다.
기본 아이디 / 패스워드는
admin / admin123
내가 설정한것들
1. Repositorites
- hosted Repository 선택
- 고유한 Repo ID , Name 등 필수값이 별표되어있으니 작성하고,
선택하는것중에 Deployment Policy 항목에 DropDown 에 Allow Redeploy 로 선택
Provider 를 maven2 를 선택
Repository Policy 항목에서는 Release 아니면 snapshot 을
선택하는데 원하는것 선택후 ( 그에 맞는 pom설정이 필요할것. - 틀리니까 개고생 )
위 간단히 쓴것처럼 난 release와 snapshot 리파지토리를 두개만들고
2. Group Repository
그룹 리파지토리를 생성.
- 이거는 이미 있는 리파지토리를 묶는용도 같다. - 그래서 그룹이겠지;;
아무튼 생성하면
아래그림처럼
있는 리파지토리에서 선택 ( 오른쪽이 리스트고 왼쪽이 선택한것임 )
3rd party는 원래있던것인데 아마도 maven에 없는거 넣을때 쓰는것같아서 추가함.
Central은 이미 있는 메이븐 그냥 전달용? 으로 연결만 해놓은것같아서 추가함.
Release는 뺐음 스크린샷은 있지만 뺏음 ;;;;
devrepo 와 , relrepo는 내가 만든 리파지토리 이고
그림에 Group ID를 repomaster로 해서 묶어줬다.
내가 작업한 기록이니까 난 내가 알기쉽게 기록함 ㅎㅎ;;
권한설정
넥서스 권한이 보니까
왼쪽메뉴에 보면 Security 가 있다.
아래그림처럼
각각 클릭해서 보니까
읽기,쓰기,보기,수정 권한은 Privileges이다.
이걸~
하나의 Role로 만든것이다 일종의 그룹이 되주는것.
그런다음에
사용자를 만들던 있는걸 쓰던 그 사용자에게 Role을 부여하는 방식이다.
DB랑 비슷함. - 참고할것.
난 사용자 계정 만들기 귀차나서
있는 계정중 anonymous 가 있어서
그냥 여기다가 줘버림.
설정후 이클립스에서 프로젝트 두개 생성하고
1개는 배포용 프로젝트 나머지한개는 배포된것을 받아서 쓰는 것 테스트한 프로젝트. 이렇게 만들어서 테스트함
배포할 프로젝트
repotest라는 프로젝트를 만들어서 testman.java를 하나 만들어서 걍 hello찍음.
이 프로젝트의 pom.xml 아래 처럼 함.
간단히 기록용으로 쓰자면 , Central 리파지토리 추가한것때문에 mybatis를 넣어뒀고. ( 에러가나는지 안나는지. )
그리고 실제로 추가한것은 repositories부분부해서
여기서 받는다~~~~~ 라고 기술함.
그 경로가 위에서 만든 그룹으로 만든 리파지토리 아래 빨간박스 글씨부분.
그리고 플러그인 리파지토리도~ 그룹을 지정하고~ 아래 빨간박스 글씨부분 두번째.
그리고 그 밑에 보면 distributionManagement 부분 이게 배포관련 설정이더라.
이 경로는 nexus관리자에서 해당 리파지토리를 선택하고나서 보여지는 항목중에 summary를 선택하면 나온다. [그림은 아래xml 내용아래쪽에 있음]
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>repotest</artifactId>
<version>0.0.2.RELEASE</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>http://nexus.local:8081/nexus/content/groups/repomaster/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://nexus.local:8081/nexus/content/groups/repomaster/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
<distributionManagement>
<snapshotRepository>
<id>devrepo</id>
<url>http://nexus.local:8081/nexus/content/repositories/devrepo</url>
</snapshotRepository>
<repository>
<id>relrepo</id>
<url>http://nexus.local:8081/nexus/content/repositories/relrepo</url>
</repository>
</distributionManagement>
</project>
아무튼 설정을 저대로 했고 보면알겠지만 스냅샷용 , 릴리즈용 리파지토리가 이름이 좀 다르다.
snapshot리파지토리는 snapshotRepository이니까 이거 조심할것. Ctrl + C,V 할때 조심하자.
아무튼 이렇게 하고나서 빌드하니까.
빌드~
이클립스에서 run as에서 run configuration 에서 maven 빌드용하나 만들고 ,Goal 항목에 clean deploy을 해서 deploy을 하도록지정함.
요그림처럼~ 그러고나서 Run 하면~
아래처럼 쭉진행됨.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building repotest 0.0.2.RELEASE
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ repotest ---
[INFO] Deleting /Users/parkmyounghun/Documents/workspace/repotest/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ repotest ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ repotest ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /Users/parkmyounghun/Documents/workspace/repotest/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ repotest ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ repotest ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ repotest ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ repotest ---
[INFO] Building jar: /Users/parkmyounghun/Documents/workspace/repotest/target/repotest-0.0.2.RELEASE.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ repotest ---
[INFO] Installing /Users/parkmyounghun/Documents/workspace/repotest/target/repotest-0.0.2.RELEASE.jar to /Users/parkmyounghun/.m2/repository/test/repotest/0.0.2.RELEASE/repotest-0.0.2.RELEASE.jar
[INFO] Installing /Users/parkmyounghun/Documents/workspace/repotest/pom.xml to /Users/parkmyounghun/.m2/repository/test/repotest/0.0.2.RELEASE/repotest-0.0.2.RELEASE.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ repotest ---
[INFO] Uploading: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/0.0.2.RELEASE/repotest-0.0.2.RELEASE.jar
[INFO] Uploaded: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/0.0.2.RELEASE/repotest-0.0.2.RELEASE.jar (3 KB at 0.4 KB/sec)
[INFO] Uploading: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/0.0.2.RELEASE/repotest-0.0.2.RELEASE.pom
[INFO] Uploaded: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/0.0.2.RELEASE/repotest-0.0.2.RELEASE.pom (2 KB at 108.3 KB/sec)
[INFO] Downloading: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/maven-metadata.xml
[INFO] Downloaded: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/maven-metadata.xml (308 B at 17.7 KB/sec)
[INFO] Uploading: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/maven-metadata.xml
[INFO] Uploaded: http://nexus.local:8081/nexus/content/repositories/relrepo/test/repotest/maven-metadata.xml (308 B at 25.1 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.609 s
[INFO] Finished at: 2016-07-04T13:37:01+09:00
[INFO] Final Memory: 20M/306M
[INFO] ------------------------------------------------------------------------
이러면 성공 다시 관리자에서 새로추가했던 릴리즈쪽 리파지토리를 보면.
그림처럼 이렇게 등록됨. ㅋㅋㅋ
요걸 받을때는 프로젝트 생성해서 받으면 되것지?
이건 설명패스 단 요 jar를 선택하면
해당 메이븐에 넣을 dependency가 나온다.
저걸 프로젝트에서 넣으면 나오겠지모 ㅋ
받는쪽은 당연히 위에 있는 pom.xml에서 repository하고 plugin쪽 repository만 넣으면 인식하더라~
아래그림처럼
이건 쉬우니 걍 스크린샷으로 대체.
아래 그림보면 reporecv프로젝트에 Maven Dependencies있지않나? repotest ~ 오른쪽 pom.xml열어둔거에 보면 리파지토리 설정한거
그대로고~ 오른쪽 아래부분에 빌드하면 성공한거~ ㅋㅋㅋㅋ
쉽다.~ ㅋㅋㅋㅋ
하고나면 쉬운데 하기전엔 짜증~