티스토리 뷰

study/Java

[Eclipse] 이클립스 maven 설치

kwakjun0 2012. 6. 18. 09:30

1. http://m2eclipse.sonatype.org/installing-m2eclipse.html 해당 사이트를 이용하여 이클립스에 maven을 먼저 설치 합니다

위 사이트가 깨져있다면 이클립스 > Help > Install New Software 메뉴로 들어 갑니다

-http://m2eclipse.sonatype.org/sites/m2e url에 넣고 엔터후 이클립스에 설치

-http://m2eclipse.sonatype.org/sites/m2e-extras url에 넣고 엔터후 이클립스에 설치

또는 m2eclipse 대신에 아래의 plugin을 설치해도 된다.

Q4 : http://q4e.googlecode.com/svn/trunk/updatesite-iam/

위 두가지를 모두 설치 합니다 이미지 올려 두겠습니다 이미지는 두번째 설치 하는거부터 올립니다 WTP하구 Extras체크 후 넥스트



요렇게 설치를 하구 나서 이클립스 재시작을 합니다...

2. 이클립스에서 New->Project->Web->Dynamic Project를 선택하여 프로젝트를 생성합니다 아 이때 Dynamic web module를 3.0으로 할경우 web.xml에 설정한 메이븐에는 jar파일이 있지만 스프링 컨텍스트 서블릿 파일을 제대로 호출을 못합니다.. 아직 버그가 좀 있는듯 합니다 2.5로 낮추어서 작업하세요!!!!!!

3. 프로젝트 생성후 오른쪽 버튼 클릭하여 다음과 같이 메이븐프로젝트로 변경을 시작합니다

packing 형식은 war로 해줍니다. 각 설정에 맞게 그룹아이디와 Artifactid를 넣어줍니다.

4. 프로젝트 생성후 프로젝트에 오류가 발생하는데 프로젝트 마우스 오른쪽 properties 에서 변경을 아래와 같이 해줍니다.

프로젝트 > 마우스오른쪽 > properties 클릭

-Java Build Path > Libraries 탭 에서 JRE System Livrary [j2SE-1.5] 를 Remove 합니다 저희는 1.6으로 할것이기 때문에 jdk는 1.6으로 설치하세요..

-그다음 Add Livrary를 클릭합니다 JRE System Livrary 선택후 Next

-Workspace default JRE를 선택후 Finish를 합니다 자동으로 1.6이 되겠죠?

- 프로젝트 > 마우스오른쪽 > properties 클릭

- Java Compiler 에서 1.6으로 컴파일 한후 Apply하구 ok를 합니다.

- Project Facets 항목에서도 1.6으로 선택되어 있나 확인합니다..

이렇게 하고 나면 프로젝트 빨간색 오류가 사라집니다.

5.maven 프로젝트에 맞게끔 프로젝트 구조를 설정합니다

-일단 WebContent 있는 META-INF와 WEB-INF를 webapp 안에다가 넣고 WebContent 폴더는 삭제합니다 이제부터는 src>main>webapp가 웹 루트입니다.

변경후 폴더구조

-이제 자바소스가 생길 곳을 properties 에서 설정합니다 src>main>java 는 주로 자바소스들이 있을곳이고 resources 는 소스외 리소를 관리할 곳입니다

아래 사진과 같이 설정하세요

프로젝트 > 마우스 오른쪽 > properties > Java Build Path - Source 탭에서 Add Folder..클릭하여 main 하위 java폴더와 resources 폴더를 만든후 소스를 해당 폴더안에 쌓이도록 하고 Default output folder는 target\classes로 설정합니다..

6. 이렇게 하면 완료입니다 maven을 왜 사용하나 싶나 해서 봤더니 jar 파일같은 의존라이브러리를 자동으로 처리해줍니다 그외에 소스관리 builder등등..

통합적으로 다 가능하더군요..즉 디버깅은 이클립스를 최대한 이용하고 라이브러리는 maven을 의존하면 프로젝트 관리하기가 훨신 좋아집니다

일단 추가 설명을 잠시 더 드리자면 pom.xml이라는게 클래스패스에 보일겁니다 해당 xml에 아래 소스를 입력하여 넣어보세요

<properties>
<spring.version>3.0.5.RELEASE</spring.version>
</properties>

<dependencies>

<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

</dependencies>

<build>
<finalName>SpringMVC</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>

-위와같이 디펜던시를 추가하고 나면 Maven Dependencise 에 Spring3 라이브러리들이 자동으로 들어와지는것을 볼 수가 있습니다 즉 이제는 WEB-INF > lib 폴더안에 라이브러리를 관리하지 마시구 필요한 라이브러리는 pom.xml에 디펜던시를 추가하여 넣기만 하면 Maven 이 인터넷에서 알아서 필요한 라이브러리들을 가지고 올 것입니다.. 아래 사진참조

7. 자 마지막으로 webapp 안에 index.jsp1개 만드시고 톰캣으로 돌려보시면 정상으로 화면이 나오는 것을 볼 수 있습니다

그리고 하나더 위와같이 성공하였다면 http://www.mkyong.com/tutorials/spring-mvc-tutorials/ 해당 사이트 가서 스프링 MVC 소스코드 다운받아서

공부해 보세요..저도 지금부터 스프링3로 MVC 잡아볼 계획입니다..위 사이트는 MVC 자체를 다 나열한건 아니지만 저렇게 해서 스프링이 돌아간다는 좋은 예제들이 굉장히 많습니다..

그럼 다들 수고하시고 건승하세요

=========================================================================================================================
=========================================================================================================================

Maven Project 의 Default Output foler (classes 폴더) 변경시 Class Not Found 에러가 날 경우

출처 : http://ssongka.egloos.com/2436224

pom.xml 파일에서 outputDirectory 를 설정해준다.

<build>

<outputDirectory>${basedir}/build/classes</outputDirectory>

</build>

아파치 Maven 의 표준 디렉토리 구조는 이렇다

src/main/java Application/Library sources
src/main/resources Application/Library resources
src/main/filters Resource filter files
src/main/assembly Assembly descriptors
src/main/config Configuration files
src/main/webapp Web application sources
src/test/java Test sources
src/test/resources Test resources
src/test/filters Test resource filter files
src/site Site
LICENSE.txt Project's license
README.txt Project's readme

자세한 내용 참조 - > Maven Directory Layout

자 이제 우리에게 익숙하게 만들어보자.

1.pom.xml을 설정해보자

(1) 먼저 Maven 프로젝트에서 생성된 pom.xml 파일을 연다.

(2) 그다음 밑에 build부분에

<build>
<finalName>example</finalName>
<directory>${basedir}/build</directory>
<sourceDirectory>${basedir}/src/</sourceDirectory>
<outputDirectory>${basedir}/build/classes</outputDirectory>
<testSourceDirectory>${basedir}/src/test</testSourceDirectory>
<testOutputDirectory>${basedir}/build/test-classes</testOutputDirectory>
<resources>
<resource>
<directory>${basedir}/src/res</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${basedir}/src/test</directory>
<excludes>
<exclude>*.java</exclude>
</excludes>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<outputDirectory>${basedir}/build/site</outputDirectory>
</reporting>


를 추가한다. 간단히 설명 하면


sourceDirectory : src역할을 하는 디렉토리 위치를 표시한다. 여기서 필자는 src전체를 소스코드를 변경했다.

outputDirectory : build 폴더에 src에서 컴파일된 class파일을 넣는다.

testSourceDirectory : test 자바소스를 넣을 폴더위치를 넣는다.

testOutputDirectory : out될 위치를 넣는다.

warSourceDirectory : wep-app역할을 하는 부분역할을 하는 부분이다.

resources : Maven 에서 resource폴더역할을 한다.자바파일이 아닌 설정 파일이나 다른 static 파일을 넣는것도 괜찮을듯하다.

resource : 하위에 directory 는 리소스 파일위치를 지정한다.


보통 메이븐 표준대로 디렉토리를 구성하면 target 폴더에 빌드된 파일과 war 를 자동으로 넣어주지만 디렉토리 구조를 바꾸고 나서는 war로 묶어주는 플러그인이 필요 하다.
플러그인을 설정후 플러그인에서 war의 소스가 되는 폴더위치를 넣는다. 기본값으로는 src/web-app 이다.
하지만 우리는 우리의 입맛에 맞는 WebContent 라는 폴더에다 설정을 할것이다.

<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
</configuration>
</plugin>

자 이제 기본적인 pom.xml설정은 끝났다.


2. 나머지 이클립스 프로젝트 세팅을 변경해야 한다.

(1) 퍼스펙티브를 Navigation으로 하고 프로젝트를 확인해보자.

(2) 프로젝트를 선택하고 오른쪽마우스 딸깍 properties에 들어가보자

(3) Java Build Path를 선택하면 source탭이 있을것이다.
(이전 수행 작업이 필요 하다. 프로젝트에 WebContent 폴더와 build폴더를 생성하라. )

(4) Add Folder 를 선택 한다. 그리고 src폴더에 체크를 한후 ok를 선택 한다.

(5) 그리고 이전에 있었던 /src/main/resources 부분을 선택후 remove한다.

(6) 아래 부분에 Default output folder 도 example(프로젝트명)\build\classes 로 설정한다.

(7) 다음 ok를 선택한다.

(8) 다음 src/main/webapp안에 하위에 있는 모든 폴더,파일을 복사 하여 WebContent에 붙여 넣는다.

(9) 다음 src/main 폴더를 삭제 한다.

(10) 다음 target 폴더도 삭제 한다.


자이제 다이나믹 웹프로젝트 처럼 형태를 갖추어졌을 것이다.

3. 변경하는 김에 web프로젝트가 구버전 지원된것을 최신버전 지원으로 변경도 해보겠다.

(1) 먼저 프로젝트를 선택 오른쪽마우스 딸깍 properties를 선택한다.

(2) 그다음 java Compiler 에 가서 자신의 버전에맞는 버전을 선택한다. 필자는 1.6으로 선택 하였다. Apply클릭

(3) 그다음 Project Facets 부분을 선택하고 Java로 체크된 부분 버전을 6.0으로 변경한다. Apply 클릭

(4) 다음 Project Facets 안에서 Dynamic WebModule이 2.3으로 되어있는것을 보았을것이다. 현재 최신은 2.5버전
인데 선택시 오류가 생길것이다. 그부분을 수정해보자


.settings/org.eclipse.wst.common.project.facet.core.xml 파일을 열어보자.

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<installed facet="jst.web" version="2.5"/>
<installed facet="jst.java" version="6.0"/>
</faceted-project>

빨간색으로 칠한 부분을 2.5로 변경 하였다. 저장후 파일을 닫는다.
그리고 다시 Project Facets 를 확인하면 변경된것을 확인 할수있다.


4. 자 이제 Maven을 Inatall해보자


간단한 run방식으로 프로젝트를 선택 -> 오른쪽 마우스 딸깍 ->Run As - > Maven install 을 실행해보자
자 이제 Maven이 알맞게 build하고 war를 묶는 것을 확인 할수 있었다.

=========================================================================================================================
=========================================================================================================================

Maven 에서 추가한 Library(jar)를 이클립스 Was(Tomcat)에서 인식하지 못 할 경우

출처 : http://entireboy.egloos.com/4534698

project 우클릭 - Properties > Deployment Assembly > Add > Java Build Path Entries > Maven Dependencies

.classpath 파일을 확인해 보면

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER" />

위처럼 되어 있던 부분이 아래처럼 바뀌어 있다.

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>