본문 바로가기

Maven

[Maven] github을 maven repository로 사용하기

crescent에서 luceneKoreanAnalyzer.jar를 사용하는데

별도의 프로젝트로 나누어져있다. 처음에 이것을 그냥 이대로둘지.. maven을 사용해서 모듈로 합칠지..

고민을 하다가... 별도 프로젝트로 두면서 crescent에 의존성 설정을 해주면 crescent 빌드 할 때마다 자동으로

luceneKoreanAnalyzer를 다운받아 사용 할 수 있겠다 싶은 생각이 들었다.


그렇다면 이제 필요한것이 maven repository인데..


혹시 github이라면.. 뭔가 되지 않을까 싶어서 찾아봤더니 아래와 같은 글이 있었다.


http://cemerick.com/2010/08/24/hosting-maven-repos-on-github/


오옷..!


그래서 한번 따라해보았다. crescent와 luceneKoreanAnalyzer는 이미 maven 프로젝트로 만들어져있다고 가정한다.


1. github 사이트에 maven-repository로 사용 할 새로운 repository를 생성한다.


2. local pc에서 위 repository를 clone 할 디렉토리를 하나 생성한다.

[need4spd $] mkdir need4spd-maven-repo)


3. git repository로 만든다

[need4spd need4spd-maven-repo $] git init


4. origin으로 remote repository를 alias 걸어주고 pull 실행

[need4spd need4spd-maven-repo $] git remote add origin https://github.com/need4spd/need4spd-maven-repo.git


[need4spd need4spd-maven-repo $] git pull origin master


5. need4spd-maven-repo의 하위 디렉토리로 snapshots, releases 디렉토리를 생성한다.

[need4spd need4spd-maven-repo $] mkdir snapshots releases


6. luceneKoreanAnalyzer의 pom.xml에 아래의 설정을 추가한다. deploy 페이즈를 실행하기 위해서는 필요하다.

<distributionManagement>

    <repository>

        <id>repo</id>

        <url>https://github.com/need4spd/need4spd-maven-repo/raw/master/releases</url>

    </repository>

    <snapshotRepository>

        <id>snapshot-repo</id>

        <url>https://github.com/need4spd/need4spd-maven-repo/raw/master/snapshots</url>

    </snapshotRepository>

</distributionManagement>


7. luceneKoreanAnalyzer에서 deploy 페이즈를 실행한다. 단, 위 설정 그대로 실행하면 github으로 바로 deploy를 시도하는데.. 당연히 그건 안된다.. 그래서 일단 로컬에 만들었던 need4spd-maven-repo 디렉토리로 deploy가 되도록 실행한다.

[need4spd luceneKoreanAnalyzer $] mvn -DaltDeploymentRepository=snapshot-repo::default::file:../need4spd-maven-repo/snapshots clean deploy


8. 성공했다면, local need4spd-maven-repo에 deploy가 되었을 것이다. 그렇다면 이제 이것을 remote repository로 push하자.

[need4spd need4spd-maven-repo $] git push origin master


9. 이제 crescent에서 받을 수 있는 준비가 되었다. crescent의 pom.xml에 다음을 추가하자.

<repository>

   <id>need4spd-snapshot</id>

   <url>https://github.com/need4spd/need4spd-maven-repo/raw/master/snapshots</url>

</repository>

<repository>

   <id>need4spd-releases</id>

   <url>https://github.com/need4spd/need4spd-maven-repo/raw/master/releases</url>

</repository>

...

<dependency>

   <groupId>com.tistory.devyongsik</groupId>

   <artifactId>luceneKoreanAnalyzer</artifactId>

   <version>1.0-SNAPSHOT</version>

 </dependency>


10. crescent에서 빌드 실행

[need4spd crescnet $] mvn clean package



일단 local에 deploy후에 별도로 push를 해줘야하긴 하지만 개인 용도로 사용하기엔 큰 무리가 없어보인다..

근데 왠지 github에 아이디 패스워드 설정해서 바로 deploy 할 수 있는 플러그인이 있을 것 같다. --ㅋ


이거같다..

https://github.com/JakeWharton/github-deploy-maven-plugin