everydayminder

learn something everyday

Posts Tagged ‘maven

hudson + maven + PMD plugin

leave a comment »

Hudson에 연결한 maven 프로젝트에 PMD 플러그인을 설정해 본다.

우선 프로젝트의 confiruation에서 Publish PMD analysis results를 체크한다.

그리고, 설정을 저장한 다음 Build Now 해보자.
변화가 없다.

pom.xml을 바꾸자.
dependency 부분에 pmd plugin 선언을 하고,

               
        
            org.apache.maven.plugins
            maven-pmd-plugin
        

reporting 부분에 pmd 관련 설정을 기록한다. 이 때, PMD에서 검사하는 ruleset도 함께 지정한다. 만약, annotation 등을 썼다면, jdk 버전이 문제가 될 수 있으므로,
configuration에 jdk 버전도 함께 명시하자.

        
        
            org.apache.maven.plugins
            maven-pmd-plugin
            
                utf-8
                1.6
                
                    /rulesets/basic.xml
                    /rulesets/unusedcode.xml
                    /rulesets/junit.xml
                
            
        

Build 옵션 중
Goals and options에 pmd:pmd를 추가로 적어주자.

이제 Build Now를 하고 결과를 보자.
정상적으로 실행되었다면,  다음과 같이 왼쪽 메뉴에 PMD 관련 메뉴가 추가된 것을 확인할 수 있다.

 
PMD Warnings를 클릭하면, 세부 사항이 나타난다.

 

Written by everydayminder

November 30, 2011 at 09:54

Posted in tools

Tagged with , ,

hudson + maven + findbugs

leave a comment »

Hudson에 설정한 maven 프로젝트에 findbugs를 설정하자.
pom.xml에 설정할 부분은 build와 reporting 두 곳이다.

               
        
            org.codehaus.mojo
            findbugs-maven-plugin
            
                
                    package
                    
                        check
                     
                
                           
        

<build><plugins> .. </plugins></build> 사이에 다음을 추가한다.

    
        
        
            org.codehaus.mojo
            findbugs-maven-plugin
        
    
  

그리고, 다음 부분을 추가하여, reporting 부분을 정의한다.
 
프로젝트 설정에서, FindBugs부분을 선택한다.

저장 후, 다시 Build Now를 해보자.
성공하면, FindBugs Warnings 메뉴가 나타난다.

 문제가 있는 클래스를 찾아가면, FindBugs가 개선 점을 알려준다.

 

Written by everydayminder

November 30, 2011 at 08:09

Posted in tools

Tagged with , ,

hudson + maven project 설정하기

leave a comment »

Hudson에 maven 프로젝트를 설정해 보고자 한다.
기존에 작성된 maven 프로젝트가 있다고 가정하자.

1. Hudson에 연동할 기존 maven 프로젝트 준비 또는 신규 maven 프로젝트 준비

 
즉, 이렇게 생겼다고 가정하자. pom.xml이 존재하는 maven 프로젝트 파일이다.
src 폴더에는 원본 소스파일과 함께 테스트 코드도 작성해 두었다. 

2. Hudson, 새 프로젝트 만들기

다음과 같이 새 프로젝트를 만든다. Maven 연계 프로젝트를 선택한다.
(물론, 이를 위해 Hudson – Maven 관련 플러그인이 설치되어 있어야 할 것이다.)
 

3. 소스 위치 지정하기
CVS, SVN, Git 등을 활용하여, 소스를 가져올 위치를 지정한다.

 위치를 지정하고, 필요하면 계정정보 설정까지 마친다.

주기적으로 build 필요성 여부를 검사하고, build 시키기 위해 trigger 옵션을 설정한다.

일단, 여기까지 하고 save하자.

프로젝트가 정상적으로 생성되었다면, 다음과 같이 나타날 것이다.

일단, Build Now를 클릭하고, 정상적으로 설정되었는지 검사하자.

테스트 코드까지 정상적으로 실행이 되었다면, 다음과 같이 나타날 것이다.

다음에는, hudson에서 사용하는 플러그인을 설정해 봐야겠다.

Written by everydayminder

November 29, 2011 at 10:56

Posted in tools

Tagged with , , ,

maven – Eclipse에서 maven project + WTP 사용하기

leave a comment »

바로 이전 포스트에서는 command에서 maven project를 만들고, 그것을 eclipse에서 사용할 수 있도록
바꾸고 곧바로 WTP에서 인식할 수 있도록 하는 방법에 대해 소개했다.

이번에는 직접 eclipse에서 프로젝트를 생성하고, WTP에서 사용할 수 있는 방법에 대해 써보고자 한다.

1. maven 프로젝트 생성

 File > New > Other > Maven > Maven Project를 선택한다.

archetype은 webapp로 지정한다.

 
 

2. 프로젝트 파일 세부 설정하기

프로젝트를 생성하면, 위와 같은 구조로 생성이 된다. 언제나 그랬듯이, 디렉토리 구조를 변경하고 싶다. junit은 3.8.1로 되어 있어서, 버전도 바꾸고 싶고. 이 작업을 해보자.

프로젝트의 properties를 바꿔보자. (프로젝트 view에서 context 메뉴 띄우고, properties)

Project Facets를 선택하자. 
우측의 Convert to faceted form..을 선택하자.

그러면, 다음의 화면이 뜬다.

 JavaScript를 선택하고, Dynamic Web Module을 선택한다.

Dynamic Web Module의 버전을 고르자. Tomcat 7의 경우, 3.0으로 해도 되나, Tomcat 6이라면 2.5로 하자.
하단의 Further configuration available..을 클릭한다.

Context root에 웹 애플리케이션에서 사용할 context root를 입력한다. 
Content directory에 web content를 저장할 디렉토리를 입력한다. eclipse에서의 디폴트 값은 WebContent이고, 커맨드에서 maven 프로젝트를 생성하면 webapp로 지정될 것이다.


3. 디렉토리/ pom.xml 변경하기

사용할 junit의 버전을 3.8.1에서 4.8.2로 변경하고, webapp의 위치를 pom.xml에 반영하자.

  4.0.0
  com.luran
  secondweb
  war
  0.0.1-SNAPSHOT
  secondweb Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      4.8.2
      test
    
  
  
    secondweb
  
    
      maven-war-plugin
      
        webapp
      
    
    
  


Java Resources 탭에서 context 메뉴를 띄워서 Source Folder를 생성하자. (src/java, src/java/resources, src/test, src/test/resources)

디폴트로 생성된 src/main/* 등은 삭제하자.
생성된 디렉토리의 구조는 다음과 같다.

4. WTP에 연동하기

Servers 탭에 지금 생성한 secondweb 프로젝트를 추가한다. (Add and remove)

 

이제 웹 애플리케이션을 시작시켜서 테스트할 수 있다.

http://localhost:8080/secondweb으로 접속하면, 위와 같은 화면을 볼 수 있다.

Written by everydayminder

October 31, 2011 at 09:08

Posted in tools

Tagged with , ,

maven – maven project를 eclipse + WTP에서 사용가능하게 바꾸기

leave a comment »

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 바꾸기, 디렉토리 구조 바꾸기

  4.0.0
  com.luran
  firstweb
  war
  1.0-SNAPSHOT
  firstweb Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      4.8.2
      test
    
  
  
    firstweb
    src/java
    src/test
    target/classes
    target/test-classes
    
       
	   src/java/resources
       
    
    
       
	   src/test/resources        
       
    
    
        
            maven-war-plugin
            
                webapp
            
        
    
  

디렉토리 구조를 위의 pom.xml에 맞춰 바꾸자.

변경 전의 디렉토리 구조는 다음과 같다.


pom.xml에 표기한 대로 바꾼 후의 디렉토리 구조는 다음과 같다.


바꾼 후에, mvn package를 실행하면 다음과 같이 다른 디렉토리가 생성되는 것을 확인할 수 있다.


3. Eclipse화시키기

현재 파일 상태를 eclipse에서 사용하기 편하게 mvn에서 기능을 제공한다.
pom.xml이 있는 곳에서 mvn eclipse:eclipse라고 하면 pom.xml을 기반으로 eclipse 설정을 만들어 줄 것이다.

변경 전은 다음과 같다.


pom.xml이 있는 곳에서,

mvn eclipse:clean eclipse:eclipse

 를 실행하면 다음과 같이 .classpath, .project, .settings가 생성되는 것을 확인할 수 있다.
 

이제 제대로 인식되는지 eclipse에서 읽어들여보자. 

4. WTP에서 인식되게 하기

WTP에서 사용할 수 있도록 하기 위해, pom.xml에 다음의 설정을 추가한다.

		
			maven-eclipse-plugin
			2.8
			
				2.0
				/
			
		

그리고, 다시 mvn eclipse:clean eclipse:eclipse 를 실행하자.

기존 프로젝트 파일을 import 시켜보자.

5. WTP용 WAS Server 등록
File > New > Other > Server > Server 를 선택한다.
그러면, 사용할 서버의 종류를 선택할 수 있다.


6. WTP 서버에 연동하기

서버를 생성한 직후 또는 별도 생성 후, Java EE 뷰의 Servers 탭에서 웹서버에 firstweb 을 추가할 수 있다.
Add and remove를 선택하면 창이 뜨고, 이 창에서 해당 웹 애플리케이션을 추가하자.

그러면, 위와 같이 해당 항목에서 context 메뉴를 띄워서 웹 애플리케이션을 시작/ 중지시킬 수 있게 된다.
web.xml 등의 별도 설정을 하지 않은 상태에서의 테스트는 다음과 같다.

Written by everydayminder

October 27, 2011 at 00:02

Posted in tools

Tagged with , , ,

maven – eclipse indigo + m2eclipse

leave a comment »

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에 곧바로 연결하여 사용할 수 있는데, 현재 maven으로 만든 프로젝트는 WAS에 곧바로 사용할 수가 없다. (불편하다!)

일단, 이렇게 생성한 프로젝트가 정상적으로 실행되는지부터 살펴보고 나중에 환경 설정을 바꿔보자.

mvn package를 실행하면, target 디렉토리내 myweb.war이 생성된다.
$CATALINA_HOME/webapps에 myweb.war를 복사하고,
웹 브라우저에서 http://localhost:8080/myweb을 실행하면,

과 같이, Hello World!가 출력된다.
그러나, 매번 이렇게 war 파일을 복사하는 건 너무 불편하다. 분명 더 쉽게 쓰는 방법이 있을 것이다.

Written by everydayminder

October 21, 2011 at 06:42

Posted in tools

Tagged with , , , ,

maven – 템플릿을 사용하여 web project 만들기

leave a comment »

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 -DartifactId=myweb -DarchetypeArtifcatId=maven-archetype-webapp -DinterfactiveMode=false

프로젝트는 만들어졌는데, 중간에 출력된 메시지를 보니, 그냥 quick-start로 만들어졌다고 뜬다. (왜?)

그래서, interactive 모드로 다시 한 번 해본다.

mvn archetype:generate -DarchetypeCatalog=internal

목록에서 “19: internal -> org.apache.maven.archetypes:maven-archetype-webapp”를 발견했다. 19번 선택.
groupId : com.luran 입력
artifactId : myweb
1.0-SNAPTSHOT : 엔터
package : 엔터

이제 프로젝트가 정상적으로 생성된 것을 확인할 수 있다.

2. 생성한 프로젝트 확인
1) 생성한 직후


2) mvn test를 수행한 후


   * target/classes가 추가되었다.

3) mvn package를 수행한 후

    * target에 maven-archiever, myweb, war 등이 추가되었다.

 

3. 디렉토리 구조를 변경하자
지금 생성된 구조는 너무 복잡해 보인다.
기존에 작업하던 것과 같이, src/test를 빼내고, web 리소스는 WebContent 디렉토리 밑에 넣어보자.

생성된 pom.xml에는 다음과 같이 디렉토리에 대한 설정이 보이지 않는다.

  4.0.0
  com.luran
  myweb
  war
  1.0-SNAPSHOT
  myweb Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      4.8.2
      test
    
  
  
    myweb
  


그런데, 어떻게 바꾸면 될까?

mvn help:effective-pom

을 실행하면,  최상의 POM 설정을 확인할 수 있다.
본인이 실행한 결과는 다음과 같았다.

  4.0.0
  com.luran
  myweb
  1.0-SNAPSHOT
  war
  myweb Maven Webapp
  http://maven.apache.org
  
    C:devmvntestmywebsrcmainjava
    src/main/scripts
    C:devmvntestmywebsrctestjava
    C:devmvntestmywebtargetclasses
    C:devmvntestmywebtargettest-classes
    
      
        resource-0
        C:devmvntestmywebsrcmainresources
      
    
    
      
        resource-1
        C:devmvntestmywebsrctestresources
      
    
    C:devmvntestmywebtarget
    myweb
    
      
        
          maven-antrun-plugin
          1.3
        
        
          maven-assembly-plugin
          2.2-beta-2
        
        
          maven-clean-plugin
          2.2
        
        
          maven-compiler-plugin
          2.0.2
        
        
          maven-dependency-plugin
          2.0
        
        
          maven-deploy-plugin
          2.4
        
        
          maven-ear-plugin
          2.3.1
        
        
          maven-ejb-plugin
          2.1
        
        
          maven-install-plugin
          2.2
        
        
          maven-jar-plugin
          2.2
        
        
          maven-javadoc-plugin
          2.5
        
        
          maven-plugin-plugin
          2.4.3
        
        
          maven-rar-plugin
          2.2
        
        
          maven-release-plugin
          2.0-beta-8
        
        
          maven-resources-plugin
          2.3
        
        
          maven-site-plugin
          2.0-beta-7
        
        
          maven-source-plugin
          2.0.4
        
        
          maven-surefire-plugin
          2.4.3
        
        
          maven-war-plugin
          2.1-alpha-2
        
      
    
    
      
        maven-help-plugin
        2.1.1
      
    
  
  
    
      
        false
      
      central
      Maven Repository Switchboard
      http://repo1.maven.org/maven2
    
  
  
    
      
        never
      
      
        false
      
      central
      Maven Plugin Repository
      http://repo1.maven.org/maven2
    
  
  
    
      junit
      junit
      4.8.2
      test
    
  
  
    C:devmvntestmywebtarget/site
  

위의 데이터를 참조하여, 원래 pom.xml에 추가해 보자.
바꿀 항목은,

  • sourceDirectory
  • testSourceDirectory 
  • outputDirectory
  • testOutputDirectory
  • resources
  • testResources

 등 절대 경로로 되어 있는 부분이다.

  4.0.0
  com.luran
  myweb
  war
  1.0-SNAPSHOT
  myweb Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      4.8.2
      test
    
  
  
    myweb
    src/java
    src/test
    target/classes
    target/test-classes
    
       
	      src/resources
       
    
    
	   
    	   test/resources	    
	   
    
    
	
   	  maven-war-plugin
		
			WebContent
		
	
    
  


pom.xml에 표기한 바와 같이 디렉토리의 구조를 변경했다.
다시

mvn package

를 실행하면, Build Successful이 나타나고, 다음과 같은 디렉토리 구조가 생긴다.

 

Written by everydayminder

October 16, 2011 at 07:57

Posted in tools

Tagged with , , ,

maven – 설치/ 테스트

leave a comment »

1. maven 설치

* 다운로드 사이트 : http://maven.apache.org
 
maven은 위 사이트에서 받을 수 있다. 2011/10/13 현재, 버전 3.0.3이 최신이지만, 기존 프로젝트의 호환성과 안정성 측면에서
옛날 버전이지만 2.2.1을 설치하고, 테스트해 보기로 한다.

apache-maven-2.2.1-bin.zip을 다운받아, 나의 작업 디렉토리인 c:devmaven2에 설치한다.
환경변수 MAVEN_HOME을 선언하고, 위 경로를 지정한다. path에  %MAVEN_HOME%bin을 추가한다.

 “mvn -version”을 입력해보자.

2. 공식 가이드

당연히, apache에서는 공식 가이드(http://maven.apache.org/guides)를 제공하고 있다.
틈틈이 읽어보는 것이 좋을 것 같다. 가이드에는 다음의 내용이 기술되어 있다.

  • 5분 이내 maven 사용하기
  • 30분 이내 maven 사용하기
  • 라이프 사이클 
  • POM
  • repository
  • archetype

3. 5분 + 30분 가이드를 따라해 보자

mvn archetype:generate -DgroupId=com.luran -DartifactId=test 
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

위와 같이 변경하여 실행하였다.

생성된 디렉토리 구조는 아래와 같다.

test
|-- pom.xm
l`-- src
|-- main
| `-- java
| `-- com
| `-- luran
| `-- App.java
`-- test
`-- java
`-- com
`-- luran
`-- AppTest.java

저절로 생성된 pom.xml은 아래와 같다.

  4.0.0
  com.luran
  test
  jar
  1.0-SNAPSHOT
  test
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
  

이제 가이드에 나와있는 것처럼, build를 해보자.

mvn package


굉장히 많은 jar 파일들을 알아서 다운로드 하는 것을 볼 수 있다.
(이 많은 파일들은 다 어디로 갔을까?) 

빌드하고 나서, 실행한 결과는 다음과 같다.

 
 
USER_HOME/.m2에 위에서 받은 jar 파일들이 저장된다.
내 PC에서의 USER_HOME = c:/Users/luran이므로 c:/Users/luran/.m2를 확인하면,
repository 디렉토리가 생성되어 있고, 그 내부에 다음과 같이 하위 디렉토리와 jar 파일들이 있는 것을 확인할 수 있다.

그런데, 공식 가이드에 소개된 pom.xml과 달리 내가 따라 만든 프로젝트의 pom.xml에는 junit의 버전이 3.8.1로 되어 있다.
local repository에 가보면, junit디렉토리에, 3.8.1과 4.8.2가 다운로드 되어 있는 것을 확인할 수 있다.

지금, 3.8.1 디렉토리에는
 – junit-3.8.1.jar
 – junit-3.8.1.jar.sha1
 – junit-3.8.1.pom
 – junit-3.8.1.pom.sha1

이 있고, 4.8.2 디렉토리에는
  – junit-4.8.2.pom
  – junit-4.8.2.pom.sha1

만 있다. 그러면, pom.xml에 써놓은 junit의 버전을 3.8.2로부터 4.8.2로 바꾸면?
mvn pakcage를 다시 실행해보자.

화면에 나타난 것처럼, junit-4.0과 4.8.2를 다운로드하는 것을 볼 수 있다. (4.0까지?)
이제 local repository에 가보면, junit 디렉토리에 새로 생성된 4.0과, 내용이 달라진 4.8.2를 발견할 수 있다.

4.0 디렉토리에는
  – junit-4.0.jar
  – junit-4.0.jar.sha1
  – junit-4.0.pom
  – junit-4.0.pom.sha1

이 있고, 4.8.2 디렉토리에는 이제
  – junit-4.8.2.jar (추가)
  – junit-4.8.2.jar.sha1 (추가)
  – junit-4.8.2.pom
  – junit-4.8.2.pom.sha1
이 있다.

물론, 빌드는 성공했고, 실행 결과도 동일하다.

Written by everydayminder

October 13, 2011 at 02:02

Posted in tools

Tagged with ,