IntelliJ에서 gradle을 이용하여 Spring MVC 프로젝트 만들기
들어가기 전
목표
- IntelliJ에서 gradle을 이용하여 Spring MVC 프로젝트 만들기
- Tomcat과 연동하여 Hello world 띄우기
과정
- IntellJ에서 Gradle 프로젝트 생성 #
- Spring MVC project 설정 #
- Artifacts 설정 #
- 설정 파일 변경(
web.xml
) # index.jsp
작성 #- Tomcat 설정 #
구현 환경
- macOS X (10.13.6)
- IntelliJ IDEA (2018.3)
- Spring MVC (4.3.18, 5.0.8)
- Gradle (4.6)
- Tomcat (8.5.32)
1. IntellJ에서 Gradle 프로젝트 생성
Gradle - Java 선택
GroupId, ArtifactId 설정
Gradle 설정.
프로젝트 명, 경로 설정
만들어진 프로젝트 구성
2. Spring MVC project 설정
방법1. IntelliJ에서 제공하는 Spring MVC 라이브러리 다운로드
좌측 상단의 프로젝트명 우클릭 - [Add Framework Support…] 선택
[Spring] - [Spring MVC] 선택
Download를 선택하여 직접 라이브러리를 다운로드합니다. 버전은 4.3.18 입니다.
추가된 Spring MVC 라이브러리 확인
프로젝트의 root 디렉토리 아래에 /lib
이 생성 되었고, 거기에 다운로드 받은 라이브러리가 저장된 것을 확인할 수 있습니다. 그리고 IntelliJ에서 자동으로 /web
과 /web/WEB-INF
, 설정파일을 자동을 생성해 줍니다.
방법2. Gradle을 이용한 의존성 주입
저는 gradle로 의존성을 주입하여 프로젝트를 관리했습니다.
build.gradle 파일에 Spring MVC 의존성 주입
Spring MVC의 버전은 https://mvnrepository.com에서 5.0 중 가장 많이 쓰이는 것을 사용하였습니다.
- 참고: MVN repository - Spring Web MVM
// https://mvnrepository.com/artifact/org.springframework/spring-webmvc
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.0.8.RELEASE'
Gradle import 후 프로젝트 구성
아까와는 달리 External Libraries 아래에 Spring MVC와 dependency 라이브러리들이 설치된 것을 확인할 수 있습니다.
build.gradle
plugins {
id 'java'
}
group 'com.delf.spring'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.0.8.RELEASE'
}
Framework Support 추가
- 방법1.에서와 같이 [Add Framework Support…]를 선택하여 [Spring] - [Spring MVC]를 체크해줍니다.
- 그리고 Download가 아닌 [Use library]를 선택하면, 아까 설치된 Spring MVC 라이브러라가 자동으로 연결됩니다.
- 추가가 완료되면, 라이브러리에 맞춰 설정 파일과
index.jsp
가 생성된 것을 확인할 수 있습니다.3. Artifacts 설정
다음 과정은 자동으로 구성될 수 있습니다만, 설정되지 않았다면 다음과 같은 에러가 발생합니다.Connected to server
Artifact com.delf.spring.spring-store:war exploded: Artifact is being deployed, please wait...
경고 [RMI TCP Connection(2)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [4.0]. Default version will be used.
심각 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
심각 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [/com_delf_spring_spring_store_war_exploded] startup failed due to previous errors
Artifact com.delf.spring.spring-store:war exploded: Error during artifact deployment. See server log for details.
정보 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/Cellar/tomcat@8/8.5.32/libexec/webapps/manager]
정보 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/Cellar/tomcat@8/8.5.32/libexec/webapps/manager] has finished in [55] ms
Spring MVC 라이브러리에 대한 Artifact를 추가합니다.
- [File] - [Project Structure] - [Artifacts]
- Project Structure 설정 단축키 (
⌘
+;
)
- Project Structure 설정 단축키 (
- 우측에 있는 Spring과 Spring MVC 라이브러리 더블클릭
- 추가 완료
4. 설정 파일 변경(web.xml
)
변경<url-pattern>*.form</url-pattern>
을 <url-pattern>/</url-pattern>
로 변경하는 거 이외에는 모두 같습니다.
web.xml
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.form</url-pattern> <!--"*.form"을 "/"로 변경-->
</servlet-mapping>
5. index.jsp
작성
Hello Spring Store! 라는 문구를 출력해보겠습니다.
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Spring Store</title>
</head>
<body>
Hello Spring Store!
</body>
</html>