Languages/Java2008/07/16 16:46

SVN에 등록된 Maven 프로젝트를 checkout 받아서 빌드하는 과정은 아주 단순하다.

우선 다음과 같이 프로젝트를 checkout 한다.

svn co http://..../svn/pe/testapp testapp

이전 글과 마찬가지로, 붉은색으로 표시된 부분은 자신의 환경에 맞추어 바꾸면 된다.

co는 checkout의 약자이고, 그 뒤에 나오는것은 project의 URL이며, (이를 위해서 Apache에 SVN 서버가 통합되어 있어야 한다. 그 통합 방법은 이전 글에서 다룬 바 있다.) testapp는 checkout 받은 소스가 들어갈 디렉터리 이름이다.

이렇게 하면 testapp 디렉터리 안에 소스코드들이 쫙 깔린다.

이 디렉터리로 가서

mvn compile

위와 같이 하면 코드가 컴파일된다. 다음은 실행 결과이다.

bjlee@bjlee-ubuntu804:~/work/maven/testapp$ mvn compile
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building testapp
[INFO]    task-segment: [compile]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Wed Jul 16 16:44:00 KST 2008
[INFO] Final Memory: 2M/6M
[INFO] ------------------------------------------------------------------------

테스트를 실행하는 방법은 다음과 같다.

mvn test

위와 같이 하면 테스트가 실행된다. 다음은 실행 결과이다.

bjlee@bjlee-ubuntu804:~/work/maven/testapp$ mvn test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building testapp
[INFO]    task-segment: [test]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test]
[INFO] Surefire report directory: /home/bjlee/work/maven/testapp/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running re.etri.moncp.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Wed Jul 16 16:44:51 KST 2008
[INFO] Final Memory: 4M/8M
[INFO] ------------------------------------------------------------------------


이제 테스트 결과 fail된 테스트가 발견되었을 시, 그에 대한 issue를 Trac에 자동 등록하도록 하는 부분을 구성해야 한다. 그 부분이 가장 어렵다.

<self-question>
지금 생각으로서는 Maven 플러그인을 구현하면 좋을것 같기도 한데, 그 방법이 워낙 까다로와서 엄두가 나질 않는다. 하지만 시도해 볼 만한 가치는 있을 듯... (아니면 google 검색을 잘 하면 나올지도 *쿨럭*)
</self-question>



Posted by 이병준

TRACKBACK http://www.buggymind.com/trackback/144 관련글 쓰기

댓글을 달아 주세요

Languages/Java2008/07/16 12:44

SVN 서버 준비 (with apache2)

sudo apt-get install libapache2-svn
위의 절차는 /usr/lib/apache2/modules/ 디렉터리에 mod_svn_dav.so(?) 파일을 깔기 위한 것.

그 다음에 /etc/apache2/conf.d/svn 파일 생성 후 다음과 같이 입력. 붉은 색으로 표시된 부분은 각자 입맛에 따라 바꾸면 됨.

<Location /svn/pe>
    DAV svn
    SVNPath /home/bjlee/work/svn/pe
        AuthType Basic
        AuthName "PE svn repository"
        AuthUserFile /home/bjlee/work/trac/pe/trac.htpasswd
        Require valid-user
</Location>

필자는 Trac 패스워드를 재사용하였다. 'developer'같은 멍청한 이름의 사용자를 두지 않는 한 괜찮을 듯. 어차피 Trac 시스템을 사용하는 사람들이 Eclipse를 써서 소스를 고치고 등록할테니.

그런 다음 /home/bjlee/work/svn/pe 디렉터리의 권한을 다음과 같이 수정.

addgroup bjlee www-data
sudo chown -R bjlee:www-data pe
sudo chmod -R g+w pe/
sudo chmod 444 pe/format pe/db/format

여기까지 한 다음 sudo apache2ctl restart 한다.
간혹 /etc/apache2/conf.d/svn 파일에 문제가 있다는 오류 메시지가 뜨기도 할텐데, 대부분 LoadModule를 추가하지 않아서 생기는 문제일 것. http://www.pyrasis.com/main/Subversion-HOWTO#s-4.2 이 문서를 참고해서 /etc/apache2/conf.d/svn 맨 윗줄에 추가해주면 된다. 필자는 안넣어도 되길래 그냥 넣지 않았다.

Subversion, m2clipse 플러그인 설치 (+with Eclipse)

Subversion plugin을 Eclipse에 설치하면 SVN 서버와 연동할 수 있다. 물론 SVN 서버는 상기 절차를 거쳐 apache2 서버를 통해 외부와 연동할 준비가 되어 있어야 한다.

ubversion 설치를 위해서는 update 사이트에 http://subclipse.tigris.org/update_1.4.x 를 추가. 그런 다음 m2clipse plugin 설치를 위한  http://m2eclipse.sonatype.org/update/ 사이트를 역시 update 사이트에 추가.

그런데 설치하려고 하다보면 equinox라는 플러그인에 대한 의존성을 해결할 수 없다고 불평할 때가 있음. 그런 경우에는 관련 플러그인들을 찾아서 설치하거나 Maven Integration for AJDT를 선택하지 않으면 문제를 해결할 수 있음.

Eclise에서 Maven 프로젝트를 생성하고 SVN 저장소에 등록해보자

프로젝트 생성 과정은 다음과 같다.
File->New->Maven Project
첫 번째 창에서 use default workspace location을 선택하고, 
두 번째 창에서 maven-archetype-quickstart를 선택한다. (Nexus Indexer가 선택된 상태라야 가능)
세 번째 창에서 필요한 값들을 입력하고 finish를 누르면 프로젝트가 생성된다.

프로젝트를 SVN 서버에 올리는 과정은 다음과 같다.
프로젝트 생성 후 프로젝트 이름 위에서 마우스 오른쪽 버튼 클릭 -> team -> share 선택하면
첫 번째 창에서 SVN 선택,
두 번째 창에서 리파지토리 위치 선택 (http://xxxx.../svn/pe)
그러고 나면 아이디랑 패스워드를 물어볼텐데, 그때는 적절히 아이디랑 패스워드를 입력해 주면 됨. (그에 대해서는 맨 위의 "SVN 서버 준비"의 관련 부분 참고.

맺으며

여기까지 하면 Eclipse를 통해 Maven 프로젝트를 생성하고, 중앙 저장소에 등록하는 준비가 끝난 셈이다. 이전 글에서 설명했던 MyLyn + Trac 연동만 제대로 되면, "이슈 추적 + 코드 공유"라는 큰 그림을 Eclipse를 통해 그리는 준비작업은 대략 끝난 셈이다.

이제 필요한 것은 SVN 저장소에 저장된 공유 코드들을 매일 빌드하고, 그 결과를 새로운 이슈로 만들어 Trac에 등록하는 작업을 어떻게 처리하느냐다.

그 부분은 다음 글에서 다루도록 하겠다.



Posted by 이병준

TRACKBACK http://www.buggymind.com/trackback/143 관련글 쓰기

댓글을 달아 주세요