바로 이전 포스트에서는 command에서 maven project를 만들고, 그것을 eclipse에서 사용할 수 있도록 바꾸고 곧바로 WTP에서 인식할 수 있도록 하는 방법에 대해 소개했다. 이번에는 직접 eclipse에서 프로젝트를 생성하고, WTP에서 사용할 수 있는 방법에 대해 써보고자 한다. 1. maven 프로젝트 생성 File > New > Other > Maven > Maven Project를 선택한다. archetype은 webapp로 지정한다. 2. 프로젝트 파일 세부 설정하기 프로젝트를 생성하면, 위와 같은 구조로 생성이 된다. 언제나 그랬듯이, 디렉토리 구조를 변경하고 싶다. junit은 3.8.1로 되어 있어서, 버전도 바꾸고 싶고. 이 작업을 해보자. 프로젝트의 properties..
eclipse에서 web project를 작성하게 되면 사용하게 되는 것이 WTP이다. 그러나, 앞서 maven 프로젝트를 생성한 것만으로는 자동으로 WTP와 연동이 되지 않는다. 이를 위해 설정을 바꿔보자. 1. 테스트 프로젝트 만들기 interactive 모드로 프로젝트를 생성한다. mvn archetype:generate -DarchetypeCatalog=internal 목록에서 "19: internal -> org.apache.maven.archetypes:maven-archetype-webapp". 19번 선택. groupId : com.luran 입력 artifactId : firstweb 1.0-SNAPTSHOT : 엔터 package : 엔터 2. pom.xml 바꾸기, 디렉토리 구조 바꾸..
2011/6/22에 릴리즈된 Eclipse Indigo의 기능중, * m2eclipse에 대한 지원이 강화되었다는 것 * myln을 통해 Hudson을 연동할 수 있다는 것 등의 이유로, Helios에서 Indigo로 업그레이드 해보려고 한다. (그냥 다시 설치) 1. m2e plugin 설치 최신 m2eclipse 플러그인 이름이 m2e로 변경되었다. Help > Install New Software 에서 m2e를 찾아보자. Collaboration 밑에 m2e 항목을 발견할 수 있다. 체크를 하고 설치하자. "Finish"를 하면, 프로젝트가 생성된다. 생성된 디렉토리 구조는 다음과 같다. 생성된 pom.xml은 아래와 같다. 기존의 WTP 프로젝트는 등록한 WAS에 곧바로 연결하여 사용할 수 있는데..
Anyframe은 Spring을 기반으로 여러 오픈소스를 합쳐놓은 (개인 생각으로는) 하이브리드형 오픈소스이다. 자세한 설명은 http://www.anyframejava.org 를 참고하면 좋을 듯 하다. 2011/10월 현재, 최신 버전은 5.0.1이며(2011/07/06 릴리즈)이다. 설치 방법은 http://www.anyframejava.org/project/anyframe/quickstart 에 자세히 나와 있다. 가이드가 안내하는 대로 일단 따라서 해보고자 한다. 가이드에 있는 것과 같이 $MAVEN_HOME/conf/settings.xml 파일에 아래의 내용을 추가하였다. myprofile anyframe repository for Anyframe http://dev.anyframejava.o..
1. 사용가능한 템플릿은? maven에서 기본적으로 제공하는 archetype은 다음의 사이트에서 찾아볼 수 있다. http://docs.codehaus.org/display/MAVENUSER/Archetypes+List 목록 중, 다음의 항목이 눈에 들어온다. "simple java web application" maven-archetype-webapp org.apache.maven.archetypes A simple Java web application archetype을 maven-archetype-webapp로 지정하여 만들어 보자. 일단, quick-start를 했을 때처럼 다음과 같이 입력해 보았다. mvn archetype:generate -DgroupId=com.luran -Dartifac..
1. maven 설치 * 다운로드 사이트 : http://maven.apache.org maven은 위 사이트에서 받을 수 있다. 2011/10/13 현재, 버전 3.0.3이 최신이지만, 기존 프로젝트의 호환성과 안정성 측면에서 옛날 버전이지만 2.2.1을 설치하고, 테스트해 보기로 한다. apache-maven-2.2.1-bin.zip을 다운받아, 나의 작업 디렉토리인 c:\dev\maven2에 설치한다. 환경변수 MAVEN_HOME을 선언하고, 위 경로를 지정한다. path에 %MAVEN_HOME%\bin을 추가한다. "mvn -version"을 입력해보자. 2. 공식 가이드 당연히, apache에서는 공식 가이드(http://maven.apache.org/guides)를 제공하고 있다. 틈틈이 읽어..
주로 Hudson을 썼는데, 이번에는 TeamCity를 설치하고 사용해 보고자 한다. 다운로드 사이트 : http://www.jetbrains.com/teamcity/ 2011/10/11 현재 최신 버전은 6.5이며, 만들 수 있는 설정 및 사용자 수에 제약이 있지만, Professional Edition 만으로도 테스트는 충분할 것이다. 플랫폼에 따라 또는 연동 방식에 따라 설치본이 나뉜다. 즉, 윈도우즈 서비스로 실행시킬 수도 있고, core만 설치하여 별도로 실행시킬 수도 있는 것 같다. 나열된 여러가지 플랫폼과 설치 방법중, 내가 택한 옵션은 "윈도우즈 플랫폼에, 기존의 J2EE 컨테이너에 설치하기"이다. 그러면, 나의 다운로드는 "JavaEE Container 탭"의 다운로드를 선택하면서 시작된..
moreunit은 작성중인 클래스에 테스트 코드가 작성되어 있는지를 시각적으로 보여주는 플러그인이다. 해당 플러그인에 대한 자세한 설명은 http://moreunit.sourceforge.net/index.html 에서 확인할 수 있다. 설치는, 직접 다운로드하여 플러그인 디렉토리에 풀어주거나, 이클립스 플러그인 설치 메뉴로부터, http://moreunit.sourceforge.net/update-site/ 를 등록하여 다른 플러그인 설치 과정과 동일하게 설치하면 된다. 본인의 경우, 별다른 기본 설정없이도 작성중인 클래스에 대해 테스트 클래스를 찾아 보여주었는데, 설정이 동작하지 않는다면 properties context menu로부터 세부 설정이 가능하다. 동작시의 화면은 moreunit의 공식사이..
"내가 작성한 코드는 잘 작성한 것일까?" 내가 작성한 코드가 이상없이 동작하는지 검사하기 위해, JUnit 등을 사용하여 테스트를 수행해 왔다면, 이제 이런 질문을 던져볼 만도 하다. 프로그래머가 작성한 코드는 "논리"의 집합이다. 그렇다면, 테스트케이스는 "그 논리가 적합한가?" 혹은 "그 논리에 헛점이 있는가?"를 검증하기 위한 것이라고 할 수 있을 것이다. 그러면, 그 "논리를 세우는 방법이 잘 되어 있는가?"를 검증하는 방법도 있을 법하다. 그래서, "코드검사"를 수행한다!! 코드 검사는 내가 작성하는 코드가 표준에 맞는지, 어떤 잠재적인 오류 패턴을 내포하고 있는지 등을 검사해 준다. CheckStyle, PMD, FindBugs 등 여러 가지가 있으나, FindBugs를 hudson에 연동하..
사실, 개발하면서 주석을 다는 것은 무척이나 흥미로운 귀찮은 일이다. 게다가 포맷을 지키고, 어떤 파라미터가 넘겨지고, 리턴 값은 어떻고, 어떤 상황에서 어떤 exception이 던져진다는 것까지 써야 한다면 더더욱 그렇다. 보통 프로그램부터 작성한 후, 주석을 달라고 한다면, 주석을 다는 것이 아주 하기 싫은 일이 될 가능성이 크다고 생각한다. 주석을 달면서, 코드 리뷰도 하고, 분석도 하고, 수정도 하는 선순환이 되기 보다는 상당히 형식적인 주석 작업이 될 확률이 더 높아진다. 오히려, 보다 양질의 주석을 달기에 좋은 시기는 해당 부분을 프로그램화 할 때라고 생각한다. 모든 프로젝트를 완료한 후, javadoc을 사용하는 대신에 초기부터 javadoc을 사용해 보자. 자신이 작성하는 코드와 비슷한 시..
지난 글에 설정한 바대로 ant task를 정상적으로 진행했다면, ant task로 emma.report 태스크를 수행했을 때, coverage.html과 coverage.xml이 생성되었을 것이다. 참고로, 생성된 coverage.html을 살펴보자. 해당 패키지의 구성중, 클래스/메소드/블럭/라인 기준으로 어느 정도가 test로 커버 되고 있는지를 보여준다. 패키지 이름을 클릭하면, 패키지에 포함된 클래스들이 나타나고, 이 클래스들이 어느 정도 test로 커버되고 있는지 보여준다. 이 중, 아무 클래스나 또 클릭하게 되면, 클래스내의 메소드들이 test로 어떻게 커버되고 있는지 현황을 자세하게 보여주게 된다. 이 결과물은, 별도의 ant task를 수동으로 실행시켜 얻은 결과물이므로, 이제 hudso..
지난 글t에서 hudson에 JUnit 테스트를 수행하는 방법에 대해 소개하였다. 물론, 코드의 품질은 어떤 테스트 코드를 어떻게 작성하느냐에 코드의 신뢰도가 달라진다. 그렇다면, 좋은 테스트는 테스트 케이스의 수에 단순히 비례할까? 두 말할 필요 없이 얼마나 양질의 테스트가 어떻게 수행되었는지가 중요할 것이다. 본 포스트에서 말하고자 하는 metric은 테스트의 커버리지(coverage)이다. 즉, 테스트의 커버리지가 높은 프로젝트 코드들은 검증을 거친 부분이 많으므로, 상대적으로 양질이라고 볼 수 있다. Emma는 프로젝트 코드와, 프로젝트 코드를 테스트하는 테스트 코드를 조합하여 비교함으로써, 주어진 테스트 코드가 원본 소스 코드에 대해 어느 정도의 커버리지를 갖는지를 조사해 준다. Emma는 어디..