* 출처: http://www.devx.com/Java/Article/36785/0/page/4
--------------------------------------------------------------------
* 필요한 프로그램.
1) Eclipse: http://eclipse.org
2) Maven2: http://maven.apache.org
3) M2eclipse (Maven Plugin for Eclipse): http://m2eclipse.codehaus.org/
각 프로그램의 설치는 생략하도록 하겠습니다.
<간략한 사용 개요>
1. Maven project <tempForRef> 생성
2. Dynamic Web project <sample1> 생성 <-- 실제로 사용할 프로젝트
3. <termpForRef> Maven project에서 필요한 디렉토리(src, target)를 <sampl1> Dynamic Web Project 로 복사.
4. sample1 프로젝트에서 파일 수정 (.classpath, .settings/org.eclipse.jst.j2ee.internal.module.container)
5. sample1 프로젝트의 프로퍼티에서 JAVA EE Module Dependencies 창에서 Maven Dependices 체크
6. 필요한 라이브러치 추가 (Dependency Management)
--------------------------------------------------------------------
1. Maven 프로젝트 생성하기 (File→New→Other→Maven→Maven Project)
Page | Data |
---|---|
Page 1 | |
Project Name | tempForRef |
"Create in Workspace" radio button | 선택 |
Page 2 | |
Group ID | tempForRef |
Artifact ID | tempForRef |
Version | 0.0.1-SNAPSHOT |
Packaging | war |
Description | Leave blank or fill in with whatever is appropriate |
Project Layout | Ensure these checkboxes are checked: src/main/java, src/main/resources, src/test/java, src/test/resources, and src/main/webapp (추가) |
Page 3 | Ignore this page |
2. 새로운 Dynamic Web Project 생성 (File→New→Other→Web→Dynamic Web Project)
Page | Data |
---|---|
Page 1 | |
Project Name | sample1 |
Project Contents | Use default (For Directory) |
Target Runtime | Apache Tomcat v6.0 |
Configurations | Default Configuration for Apache Tomcat v6.0 |
Page 2 | |
Dynamic Web Module | Selected by default |
Java | Selected by default |
Page 3 | |
Context Root | sample1 |
Content Directory | WebContent |
Java Source Directory | src |
3. Enable Maven
sample1 프로젝트에서 오른쪽 버튼을 눌러 팝업메뉴에서 Maven→Enable Dependency Management 을 눌러 선택한다.
패키징에 war가 정상적으로 선택되어 있는 지 확인한다.
4. Create Maven Folder Structure
Navigator (Window→Show View→Other→General→Navigator)를 열고, maven 프로젝트로 생성한 tempForRef 디렉토리에서 src와 target 디렉토리를 선택/복사하여 dynamic web project에 복사를 한다.
혹은 폴더 만들기(File→New→Folder)를 이용하여 sample1 디렉토리에 아래의 폴더를 생성한다.
필요한 폴더는 아래와 같다.
1) src/main/java
2) src/main/resources
3) src/main/webapp
4) src/test/java
5) src/test/resources
6) target/classes
7) target/test-classes
정상적으로 복사한 후에도 위와 같은 폴더들이 존재하는 지 체크하자.
5. Update Source Folders
Sample1 프로젝트에서 .classpath 화일을 연다. (Navigator View)
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
노란색 바탕으로 된 라인을 아래와 같이 수정을 한다.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con"
path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
위의 파일을 수정한 이후에 Package Explorer View를 열고 .settings/org.eclipse.wst.common.component을 열고,
1) /WebContent 을 찾아 /src/main/webapp로 수정을 한다.
2) build/classes 을 찾아 target/classes로 수정을 한다.
3) 아래와 같은 라인을 찾아 지운다.
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
그러면 아래와 같은 화면을 볼 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="sample1">
<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<property name="context-root" value="sample1"/>
<property name="java-output-path" value="target/classes"/>
</wb-module>
</project-modules>
Project Explorer View에서 /WebContent 디렉토리 안에 있는 META-INF and WEB-INF 디렉토리를 src/main/webapp 디렉토리로 이동(혹은 복사)을 한다. 그리고 나서 WebContent 와 build 디렉토리를 지운다.
6. Configuring JAVA EE Module Dependencies
프로젝트에서 오른쪽 버튼을 눌러, 프로퍼티 창을 연다.
JAVA EE MOdule Depedencies를 클릭하고, 오른쪽에서 Maven Dependencies 항목을 체크후 OK 를 누른다.
7. Dependency Management
프로젝트에서 오른쪽 버튼을 눌러, Repository Search (Maven→Add Dependencies)를 연다.
그리고 tomcat 이라고 입력을 한다. servlet-api.jar를 아래 창에서 찾아 클릭후 OK를 누른다.
pom.xml 파일을 찾아 열고, "source" tab을 연다.
아래 부분을 굵은 글씨 부분을 참고한다.
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>sample1</groupId>
<artifactId>sample1</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<description></description>
<dependencies>
<dependency>
<groupId>tomcat</groupId>
<artifactId>servlet-api</artifactId>
<version>5.5.15</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>displaytag</groupId>
<artifactId>displaytag</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</project>
servlet-api 같은 경우에는 maven을 이용하여 컴파일시에 필요하다.
8. Maven Run Configurations
메뉴바에서 "Open External Tools Dialog" 찾아 클릭을 한다.
Maven Build에서 "New launch configuration"을 클릭 한다.
- Name: sample1.package
- Base Directory: ${workspace_loc:/sample1}
- Goals: package
위와 같이 입력을 하고, Run을 누르면 현재 프로젝트를 war 패키징 한다.