본문 바로가기

Apache Jakarta Project/Maven

Appfuse 프로젝트 소개

출처 :  http://javajigi.tistory.com/95



1. Appfuse 프로젝트 소개
Appfuse는 다양한 프레임워크의 조합으로 프로젝트를 진행할 때 템플릿을 생성하기 위한 오픈 소스 프로젝트이다. Appfuse를 이용하면 진행하는 프로젝트의 프레임워크 조합에 따라 샘플 프로젝트를 생성할 수 있다. 이 샘플 프로젝트를 기반으로 개발 환경을 구축하는 것이 가능하다.
Appfuse가 지원하는 프레임워크를 살펴보면 다음과 같다.

  • JSF Basic
  • Spring MVC Basic
  • Struts 2 Basic
  • Tapestry Basic

위 예는 프리젠테이션 레이어를 담당하는 프레임워크들이다. 그외 Hibernate, IBatis등 다양한 프레임워크의 조합의 템플릿 프로젝트를 생성하는 것이 가능하다.

지금까지 진행한 Maven 강좌를 이해하고 있다면 이번 강좌는 쉽게 이해할 수 있을 것이다.

2. Appfuse 프로젝트 생성
Appfuse는 각 프레임워크의 조합에 따라 각각 다른 archetype을 제공하고 있다. Appfuse에서 제공하는 archetype은 http://appfuse.org/display/APF/AppFuse+QuickStart에서 확인할 수 있다. 이번 강좌의 예제에서는 Spring MVC Basic을 이용하도록 하겠다.

먼저 DOS Prompt에서 Appfuse 프로젝트를 생성하고자하는 디렉토리로 이동한 다음 Spring MVC Basic archetype을 생성한다.

mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0 -DgroupId=net.javajigi.app -DartifactId=myappfuse


 


위와 같이 실행하면 Appfuse 디렉토리 하위에 myappfuse라는 디렉토리가 생기면서 템플릿 프로젝트가 생성된다. Maven 디폴트 디렉토리 구조로 다음과 같이 생성된다.


Maven archetype을 통하여 생성된 myappfuse 디렉토리 하위를 보면 pom.xml 파일이 생성되어 있는 것을 확인할 수 있다. Appfuse 예제를 테스트하기 위하여 데이터베이스 설정을 해야 한다. pom.xml 파일을 열어 자신의 데이터베이스 설정과 맞도록 수정해준다. 이 문서에서는 Mysql 데이터베이스를 사용하여 예제를 진행했다.

 

<dbunit.dataTypeFactoryName>
    org.dbunit.dataset.datatype.DefaultDataTypeFactory
</dbunit.dataTypeFactoryName>
<dbunit.operation.type>CLEAN_INSERT</dbunit.operation.type>
<hibernate.dialect>org.hibernate.dialect.MySQLInnoDBDialect</hibernate.dialect>
<jdbc.groupId>mysql</jdbc.groupId>
<jdbc.artifactId>mysql-connector-java</jdbc.artifactId>
<jdbc.version>5.0.5</jdbc.version>
<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
<jdbc.url>
    <![CDATA[jdbc:mysql://localhost/myappfuse?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8]]>
</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password>password</jdbc.password>


위와 같이 데이터베이스 설정을 변경한 다음 myappfuse 디렉토리로 이동한 다음 mvn install eclipse:eclipse 명령을 실행하여 Eclipse 프로젝트를 생성한다. Eclipse 프로젝트를 생성한 다음 Eclipse에서 import한다. mvn install eclipse:eclipse 명령을 실행하면 관련 라이브러리를 다운받는데 많은 시간이 소요된다.

mvn install eclipse:eclipse를 실행하면 Maven 기반의 프로젝트를 Eclipse 프로젝트로 변환할 뿐만 아니라 빌드까지 진행하게 된다. 생성한 myappfuse 프로젝트는 WTP 기반의 프로젝트로 생성된다.

Maven의 Eclipse 플러그인 활용에 대한 자세한 내용은 Maven 강좌 5 - Maven 기반의 Eclipse 프로젝트 생성 및 활용에서 확인할 수 있다.

3. Appfuse 프로젝트 테스트

생성한 myappfuse 프로젝트를 Eclipse에서 import한다.


appfuse를 WTP와 연동하기 위해서는 추가적인 설정이 필요하다. 기본적으로 Maven 기반의 프로젝트를 Eclipse로 변경할 경우 특별한 추가 설정이 필요없다. 그러나 appfuse는 Common 프로젝트와 이 프로젝트와 의존관계에 있는 프로젝트로 분리되어 있기 때문에 추가적인 설정이 필요하다.

생성한 myappfuse 프로젝트의 pom.xml 파일을 열어보면 다음과 같이 war 파일과 의존관계를 가지는 것을 알 수 있다.

        <dependency>
            <groupId>org.appfuse</groupId>
            <artifactId>appfuse-${web.framework}</artifactId>
            <version>${appfuse.version}</version>
            <type>war</type>
        </dependency>


Maven의 경우 war 파일과 의존관계에 있을 경우 빌드시 war 파일을 다운받아 빌드 디렉토리에 압축을 풀어 같이 배포할 수 있도록 지원한다. appfuse 프로젝트를 생성하면 webapp 디렉토리는 다음 그림과 같다.


그러나 Maven을 이용하여 빌드를 하면 target 디렉토리가 다음과 같이 구성되는 것을 확인할 수 있다.


디폴트 Eclipse 플러그인은 src/main/webapp를 디폴트 웹 리소스 디렉토리로 인식한다. 그러나 빌드 후 Common war 파일이 target 디렉토리에 배포되기 때문에 WTP 설정 파일을 다음과 같이 변경해야 된다.

.settings 디렉토리 아래의 org.eclipse.wst.common.component 파일을 연다.

  • <wb-resource deploy-path="/" source-path="src/main/webapp"/> 삭제
  • <wb-resource deploy-path="/" source-path="target/myappfuse-1.0-SNAPSHOT"/> 추가
  • <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/> 삭제

다음 단계는 myappfuse 프로젝트를 Tomcat 서버에 배포하여 테스트를 진행하는 과정에 대하여 살펴보도록 하겠다.

Preferences -> Java -> Installed JREs로 이동하여 JDK를 추가한다. 디폴트는 JRE가 설정되어 있을 것이다. JRE가 아니라 JDK를 추가한다.


JDK를 설정한 다음 Tomcat 서버를 추가해야 한다.
Preferences -> Server -> Installed Runtimes: Apache -> Tomcat 5.5 server를 선택하여 로컬에 설치한 Tomcat 5.5를 추가한다. Tomcat 5.5를 추가할 때 앞에서 추가한 JDK 5.0을 사용하도록 한다.


Window -> Show View -> Other -> Server -> Servers로 이동한 다음 새로운 서버를 추가한다. 오른쪽 클릭 New -> Server


 


위와 같이 myappfuse 프로젝트를 WTP 기반 프로젝트로 설정되어 있기 때문에 서버를 추가할 때 배포하도록 설정하는 것이 가능하다. 추가한 서버를 시작한다.

서버를 시작한 다음 http://localhost:8080/myappfuse로 접근하면 다음과 같은 로그인 화면을 볼 수 있다면 appfuse에 대한 설정이 성공한 것이다.


admin/admin으로 로그인하면 다음 화면과 같이 Appfuse의 기능을 확인할 수 있다.

Appfuse가 가지는 기능은 간단하다. 단순히 사용자들을 관리할 수 있는 기능을 제공하고 있다. 따라서 다양한 오픈 소스 프레임워크 조합으로 애플리케이션을 개발할 때 템플릿 프로젝트로 시작하기에 좋다. Appfuse를 분석하여 개발환경을 세팅하기 위한 샘플 프로젝트로 활용하기에 충분하다. 오픈 소스 프레임워크를 활용하기 힘들어하는 개발자들이 분석하기에 규모면에서 좋은 예제라고 생각한다.

또한 Appfuse가 가지고 있는 Maven에 대한 활용 예제로서 분석하는 것도 좋은 공부가 될 것이다.