console 환경에서의 maven deploy 에러

2014-01-18 00:06

안녕하세요! 글을 쓰는 것은 처음이네요.. ㅎㅎ;

그전에 이클립스를 통해서 프레임워크와 메이븐, 그리고 임베디드 톰캣을 이용해서 로컬에서의 서버 실행은 완료했습니다. 이제 깃헙에 이를 푸시하고, 타 서버에 ssh 접근을 하여 땡겨왔구요. 그리고 로컬에서 하던 대로 실행하려고 해보니 메이븐 설치를 하며 자동으로 만들어주었던 jar파일이 pull만 하였을 때는 들어있지 않아서 특정 클래스들이 라이브러리 인식을 못하는 문제가 생겼습니다.

열심히 구글링을 해보니 maven에도 빌드 사이클이 있더라구요. mvn compile, package, install, deploy 같은 것들이요. 그래서 install까지는 여차저차 하라는대로 해서 잘 했고 중간중간 하는 테스트도 무리없이 잘 끝났는데 deploy에서 에러가 나더라구요. 구체적인 에러 메시지는 다음인 것 같았습니다.

Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter

검색해보니 pom.xml에 태그를 추가할 수 있더라구요. 하지만 이클립에서 빌드할때는 이 태그가 필요하지 않았습니다. 아니 없어도 eclipse:eclipse로 빌드가 잘 되었죠.

여기서 제가 궁금해진 것은 세 가지가 있습니다.

첫째, 해당 에러 메시지의 구체적인 원인은 무엇인가요? 둘째, 이클립스는 그럼 왜 잘 돌아갔던 걸까요? 셋째, deploy까지 끝난다면 jar파일이 잘 import 되었을까요?

직접 서버 세팅하는 경험을 해보니 많은 것들을 새롭게 익혀가는 것 같습니다.. 천천히 답변해주세요 ^^ ps. 메이븐 검색할때마다 교수님이 집필하신 그 책(!)이 정말 많이 눈에 띄네요.. ㅎㅎㅎ

3개의 의견 from SLiPP

2014-01-18 05:09

mvn deploy 은 해당 pom 의 packaging type (jar, war, etc...)에 의해 install 까지 마친 후 배포를 하는 phase 입니다. 자세한 라이프사이클은 http://maven.apache.org/ref/3.1.1/maven-core/lifecycles.html 여기를...

첫번째 deploy 를 시도하기위해 maven-deploy-plugin 이 참조하는 pom 의 데이터가 올바르지 않다는 것이구요... 설정하지 않았다면 당연히 보는 에러 메세지입니다. 해당 goal에 대해서 설정은 다음 url을 참고해보시면 될듯 싶습니다.
http://maven.apache.org/plugins/maven-deploy-plugin/

두번째, 세번째 라이프사이클을 참고해보시면 답을 얻으시리라 생각됩니다. eclipse:eclipse 는 빌드는 아니고 maven 프로젝트를 eclipse ide 에서 인식 할 수 있도록 해주는 plugin 입니다. eclipse 에서 해당 프로젝트를 import 할 시점에 auto compile 했을 것이라고 생각드네요. (mvn package 또는 install)

2014-01-18 08:18

deploy는 빌드하는 프로젝트를 메이븐 저장소에 배포하는 페이즈이다. 따라서 deploy 페이즈까지 사용할 필요는 없다. 엄밀히 따지면 install까지 않아도 된다.

메이븐으로 웹 서비스를 배포하려면 package 페이즈까지만 성공해도 된다. 그러면 프로젝트/target 디렉토리 아래에 war 파일이 생길거야. 이 war파일을 tomcat 서버에 배포하면 된다.

현재 tomcat 서버는 임베디드 tomcat을 쓴다고 했는데 그러지 말고 http://tomcat.apache.org 에서 zip 또는 tar.gz 파일을 다운로드 받아 압축을 풀어 tomcat을 설치한 후 사용하는 것이 일반적이다. 이와 같이 사용할 경우의 배포 과정은 다음과 같다.

tomcat이 잘 설치되어 있는지는 TOMCAT_HOME/bin/startup.sh를 실행해 http://IP:8080 으로 접속해 웹 페이지가 뜨면 성공이다.

  1. git pull
  2. mvn package
  3. TOMCAT_HOME/webapps 디렉토리에 프로젝트/target/{project name}.war 파일을 복사한다.
  4. TOMCAT_HOME/bin/startup.sh
  5. http://개발 서버 IP:8080/{project name}으로 접속하면 된다. 예를 들어 war 파일 이름이 next.war 파일 이라면 http://개발 서버 IP:8080/next로 접속하면 된다.

이후 배포 과정은 이를 반복하면 된다. 이 과정을 자동화하고 싶다면 다음 문서 참고해서 시도해 봐라.

http://www.slipp.net/wiki/display/IDE/1st+fabric+examples

먼저 시도했으면 하는 것이 개발 서버 말고 로컬에서 TOMCAT 설치하고 프로젝트 빌드해서 배포하는 연습을 해보면 좋겠다. 아무래도 개발 서버보다는 로컬이 더 친숙할테니까. 위 과정에서 이해되지 않는 부분이 있으면 다시 질문 남겨라.

의견 추가하기

연관태그

← 목록으로