2018년 2월 6일 화요일

github를 maven repository로 사용하기

공부하면서 점차 단일 프로젝트가 아닌 멀티 모듈 프로젝트로, 또는 복수의 참조 프로젝트를 구성하여 개발하면서 maven repository를 사용하고 싶은 경우가 생기게 된다.

따로 repo server를 두면 좋겠지만 개인 개발용인 경우 이는 무리가 있다.

github를 maven repository처럼 사용하면 복수의 개인 프로젝트 참조를 좀더 편하게 할 수 있다.

해당 기능을 제공해주는 https://jitpack.io/ 사이트가 있다.

jitpack을 사용하면 개인 프로젝트에 대해 쉽게 참조하여 사용할 수 있지만 이 경우 로컬 참조와 maven repository 참조를 바로바로 변환하지 못하는 단점이 있다.

jitpack은 여러모로 사용이 불편하지만 github를 maven repository로 사용하면 편하게 개인 참조 프로젝트를 사용할 수 있다.

사용 방법은 다음과 같다.
(maven repository를 github repository 에 만드는 것이다. 둘다 repository라는 단어를 쓰므로 구분해서 인식할 필요가 있다.)

  1. github에 maven repository 용 github repository 생성
    • bluesky-maven-repo 생성
  2. 해당 github repository를 local에 clon
    • local git 폴더에 bluesky-maven-repo 를 clon 받음
  3. maven deploy 할 프로젝트를 local  github repository 위치에 배포
    • bluesky-maven-repo 에 해당 jar가 배포 됨
  4. 해당 github repository를 push
  5. 사용할 프로젝트에서 해당 github repotiroy를 maven repository로 설정하여 사용

1, 2의 경우는 기존 github 사용이므로 설명은 생략한다.

3번의 maven 배포는 다음과 같은 명령어를 사용한다.


mvn deploy -DaltDeploymentRepository=snapshot-repo::default::file:../bluesky-maven-repo/snapshots

file의 위치는 bluesky-maven-repo 위치에 해당 브런치로 빌드하면 된다.

이렇게 배포된 내용을 github에 push 후 사용할 프로젝트에 다음과 같이 maven repository 설정을 추가한다.


<repositories>
 <repository>
  <id>github-bluesky-maven-repo</id>
  <url>https://raw.githubusercontent.com/[본인github]/bluesky-maven-repo/master/snapshots</url>
  <snapshots>
   <enabled>true</enabled>
   <updatePolicy>always</updatePolicy>
  </snapshots>
 </repository>
</repositories>

위 경우는 bluesky-maven-repo 라는 이름의 snapshot repository를 사용한 경우이며 이런 설정은 사용자마다 다르게 하면 된다.

이제 대상 프로젝트를 참조하여 사용한다.


<dependency>
 <groupId>[대상 프로젝트 groupId]</groupId>
 <artifactId>[대상 프로젝트 artifactId]</artifactId>
 <version>[대상 프로젝트 version]</version>
</dependency>

댓글 없음:

댓글 쓰기