Programming/Java

초간단 Maven local repository 만들기

라우드니스 2016. 1. 7. 17:53

준비물 : maven 3.x, nodejs (0.10.36 버전 사용)


1. 의존성으로 추가하고자 하는 jar 파일을 자신의 maven local repository(~/.m2/repository) 에 등록한다.


from http://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/


$ mvn install:install-file -Dfile={file-path} -DgroupId={group id}-DartifactId={artifactId} -Dversion={version} -Dpackaing=jar


가령 작성자의 경우는 원하는 파일을 다음과 같이 추가하였다:


$ mvn install:install-file -Dfile=../count/target/count-1.0.0.jar -DgroupId=.com.tistory.tkyoo.hbase.coprocessor -DartifactId=count -Dversion=1.0.0 -Dpackaging=jar


해당 커맨드로 BUILD SUCCESS를 본다면, ~/.m2/repository/ 밑에 groupid + artifactid + version에 해당하는 폴더에 jar 파일 및 pom 파일이 작성되어 있다.


나의 경우,

/home/tkyoo/.m2/repository/com/tistory/tkyoo/hbase/coprocessor/count/1.0.0


와 같은 폴더 안에 count-1.0.0.jar 파일 및 count-1.0.0.pom 파일이 존재하였다.


2. Nodejs를 이용한 초간단 http 서버 띄우기


from http://stackoverflow.com/questions/6084360/using-node-js-as-a-simple-web-server


nodejs를 설치했다면, 다음과 같은 2가지 node module을 설치하면 3줄 만으로 실행한 폴더 밑을 접근할 수 있는 http server를 띄울 수 있다.


$ npm install connect serve-static


server로 사용할 js 파일: (간단하게 server.js)


var connect = require('connect');

var serveStatic = require('serve-static');

connect().use(serveStatic(__dirname)).listen(8080);


해당 javascript 파일을 저장한 후 (나의 경우 server.js) node로 실행한다면 실행한 해당 파일을 root로 가지고 그 이하의 폴더에 접근 가능한 간단한 http file 제공 서버가 실행된다.


$ node server.js


3. 


1. 에서 maven을 통해 만들어진 의존성 jar 파일을 2. 에서 만든 http server에 복사한다.


나의 경우 /home/tkyoo/server/maven2/에 옮겨놓았고, 결과적으로 해당 jar파일은 /home/tkyoo/server/maven2/maven2/com/tistory/tkyoo/hbase/coprocessor/count/1.0.0 에 놓이게 된다.


server를 /home/tkyoo/server 에서 실행시켰으므로, 해당 파일에 접근하는 주소는


http://localhost:8080/maven2/com/tistory/hbase/coprocessor/count/1.0.0/{count-1.0.0.jar, count-1.0.0.pom} 이 된다.


4. 자신이 compile할 project의 pom에 추가


추가한 의존성 jar가 필요한 프로젝트의 pom에 repository를 추가한다:


  <repositories>

    <repository>

      <id> MyId </id>

      <url>http://localhost:8080/maven2</url>

      <layout>default</layout>

    </repository>

  </repositories>


repositories DOM은 project DOM 밑에 존재하면 된다.


<project>

  <repositories>

    <repository> </repository>

  </repositories>

</project>

이런 식으로

)


의존성은 1.에서 등록할때 사용한 groupId와 artifactId를 그대로 적어주면 된다. 나의 경우


<dependencies>

    <dependency>

      <groupId>com.tistory.tkyoo.hbase.coprocessor</groupId>

      <artifactId>count</artifactId>

      <version>1.0.0</version>

    </dependency>

    ....

</dependencies>


5. 컴파일 한다.



반응형