Spring Maven 개발 환경 설정
※주 : Maven과 Eclipse Juno 버전 이상이 설치된 것을 가정으로 함
Pre-quest
이클립스 설치 : Juno 버전 이상 사용
Maven 플러그인 설치 : Help > Eclipse Market Place에서 Maven Integration for Eclipse 설치
1. 이클립스 설정
일반 기업의 경우 방화벽이 있는 경우가 많기 때문에 반드시 Proxy 설정 확인하고 시작할것
① eclipse에 proxy 설정
: Juno 버전 이상 Windows > Preference > Network 메뉴에서 Active Provider를 Mannual로 변경 한후, HTTP와 HTPS proxy entriy에 서버를 등록
② Maven에서도 해줘야 함
: Juno 버전 이상 Windows > Preference > Maven 메뉴에서 setting.xml의 위치를 찾아서 다음과 같이 proxy 설정 부분을 추가 작성
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>프록시 서버 주소</host>
<port>포트</port>
</proxy>
</proxies>
<proxy>
<id>samsung</id>
<active>true</active>
<protocol>http</protocol>
<host>프록시 서버 주소</host>
<port>포트</port>
</proxy>
<proxy>
<id>samsung-https</id>
<active>true</active>
<protocol>https</protocol>
<host>프록시 서버 주소</host>
<port>포트</port>
</proxy>
</proxies>
2. 프로젝트 생성
이클립스에서 New > Other > Maven > Maven Project 선택
Filter에서 maven-archetype-quickstart 를 선택
group id 에는 프로젝트명 (일반적으로 패키지명으로 맵핑됨)
artifact id에는 디렉토리명
Package에는 패키지 명을 정의
또는 아래와 같이 Command Line으로 생성후, 나중에 이클립스에서 Import
mvn archetype:generate -DarchetpeArtifacId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DinteractiveMode=false -DgroupId=spring-tutorial -DartifactId=ch1_simple -Dversion=1.0-SNAPSHOT -Dpackage=bcho.spring.tutorial.ch1
3. pom.xml 편집
spring-beans, spring-core, spring-context를 depdency에 추가
그리고, JUnit4로 테스트를 진행 예정이기 때문에 spring-test와 junit 4.11을 추가
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-tutorial</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
</dependencies>
</project>
4. context.xml 작성
/src/main/resources/spring-context.xml 을 작성하고, bean을 정의
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="hello" class="spring_tutorial.helloworld.HelloWorld">
<property name="name" value="Byungwook"></property>
</bean>
</beans>
5. Bean Class 작성
main/java/HelloWorld.java 작성
package spring_tutorial.helloworld;
public class HelloWorld {
String hello;
public void setName(String name){
this.hello = name;
}
public String getName(){
return hello;
}
public void sayHelloWorld(){
System.out.println("hello :"+hello);
}
}
6. 수행 클래스 작성
package spring_tutorial.helloworld;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
HelloWorld hw = (HelloWorld)context.getBean("hello");
hw.sayHelloWorld();
}
}
7. Run as 에서 Java Application으로 실행
8. 테스트 클래스 작성
package spring_tutorial.helloworld;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring-context.xml")
public class AppTest
{
@Autowired HelloWorld hello;
@Test public void helloTest(){
assert( hello.getName().equals("Byungwook"));
}
}
참고 사항
1. 가끔 Eclipse에서 Maven을 수행 시키면 아래와 같은 에러가 나는 경우가 있다.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile (default-testCompile) on project helloworld: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar
이는 Eclipse가 loading될때, JDK에 있는 java가 아니라 JRE에 있는 java를 가지고 수행되었을 경우 발생하는데, maven이 javac compiler를 찾을 수 없다는 메세지이다.
이를 해결하려면 eclipse.ini에 JDK의 경로를 아래와 같이 명시적으로 지정해줘야 한다.
-vm
C:\Program Files\Java\jdk1.7.0_07\bin\javaw.exe
2. 위의 설정을 했음에도 불구하고, eclipse에서 안될때가 있는데, 이 경우에는 Runs As에서 메이븐 설정에서 JRE 부분에 JDK 경로를 지정해주면 된다.
3. 디렉토리 구조 참고
http://www.mkyong.com/spring3/spring-3-hello-world-example/
http://androi.tistory.com/37
'프로그래밍 > Spring & Maven' 카테고리의 다른 글
Spring Batch 개념 정리 (0) | 2013.06.27 |
---|---|
SpringBatch HelloWorld (0) | 2013.06.27 |
Maven 스터디 (0) | 2013.03.19 |
Spring 프레임웍 Hadoop-Hive 통합 (0) | 2013.03.19 |
Spring 프레임웍 Hadoop 지원 기능 소개 (Spring Data Apache Hadoop Project) (0) | 2013.03.18 |