'Maven'에 해당되는 글 3

  1. 2013.03.29 전자정부 표준프레임워크 개발환경에서 servlet-api가 배포되어 에러가 나는 경우
  2. 2009.08.30 협업을 위한 도구
  3. 2009.05.15 Eclipse - Maven Project를 Dynamic Web Project로 만들기

전자정부 표준프레임워크 개발환경에서 servlet-api가 배포되어 에러가 나는 경우

- 아래와 같은 에러가 난다.
심각: Exception starting filter springSecurityFilterChain
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined

심각: Error configuring application listener of class org.springframework.security.ui.session.HttpSessionEventPublisher
java.lang.ClassNotFoundException: org.springframework.security.ui.session.HttpSessionEventPublisher

심각: Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/common/error.jsp]
org.apache.jasper.JasperException: /common/error.jsp(2,62) Unable to read TLD "META-INF/c.tld" from JAR file "file:/C:/egovfrm/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/testprj/WEB-INF/lib/jstl-1.2.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

- 개발자들이 servlet-api-2.5.jar, jsp-api-2.0.jar가 배포되어서 나는 에러라고 한다.
전자정부 표준프레임워크 개발환경 2.5에서는 발생하지 않고, 2.0에서만 발생.
Server를 Clean하고, servlet-api-2.5.jar, jsp-api-2.0.jar[각주:1]를 제거하면 정상적으로 동작한다고 함.
매번 이래야 된다고.

- 먼저 Dependcy 설정을 의심.
provided로 되어 있음.

- 관련 글을 참고해서 해결
프로젝트의 Deployment Assembly에서 Maven Dependencies를 제거하고 war:inplace Goal(Run As - Maven build ...)을 실행시키면 된다.
(그래도 남아 있으면 Maven clean을 하던지[각주:2], WEB-INF/lib/*.jar를 모두 지우자)
Maven Dependencies에는 해당 라이브러리가 있지만 WEB-INF/lib/에는 없다.


  1. C:\egovfrm\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testprj\WEB-INF\lib\ [본문으로]
  2. maven clean 플러그인에서 WEB-INF/classes/와 WEB-INF/lib/를 지우도록 설정되어 있다면 [본문으로]

협업을 위한 도구

업무 개선, 협업을 위해 툴을 몇개 도입했다.

- Subversion 도입
CVS를 사용하다 Subversion을 도입했고 소스형상관리를 하도록 강제했다.
결과는 만족스러운데 아직 부족한 부분이 많다.   
  • 로컬, 개발기, 운영기 소스가 모두 다를수가 있다. 배포 프로세스를 만들어서 소스를 직접 적용하지 못하도록 해야 한다.
  • 개발도중에 수정사항이 발생한다. 브랜칭을 사용해 보자.
- 위키 사용
협업을 위해서 위키 도입
결과는 만족스럽지만 강제할 방법이 별로 없다.

- 팀 공용 주소록
구글 문서도구를 이용해서 야후에 있던 내 주소록을 올렸다.
그리고 팀원들에게 공유를 했다.
도입한지 얼마 되지 않지만 일정 규칙만 잘 지킨다면 좋은 도구가 될거 같다.

- Trac
지금 도입 준비중
꽤 쓸만할거 같다.

- Maven
개발 프로세스를 따라 하는 부분은 괜찮을거 같은데 너무 복잡하지 않나 싶다.
강력한 기능은 좋지만 진입장벽이 너무 높을 듯.

Eclipse - Maven Project를 Dynamic Web Project로 만들기

SVN에서 소스를 받는데 Maven Project여서 몇가지 수정했다.
  1. Java Build Path - Source 에서 PROJECT/src/main/java 를 추가하고 기존 소스경로는 삭제한다.(기존 소스경로 src/를 먼저 삭제해야 할수도 있다.[각주:1])
  2. PROJECT/.settings/org.eclipse.wst.common.component 수정
    /WebContent 를 /src/main/webapp 로 변경한다.

- 또는 Dynamic Web Project 생성시 Content Directory 와 Java Source Directory 위치를 잡아준다.
프로젝트 생성전 저장소를 항상 확인해 둘 것.


  1. 2011-08-22 추가 [본문으로]