💡BE/Spring

[Spring] Maven을 이용한 스프링 프로젝트 생성

뇌 리셋은 기본이지 2024. 1. 13. 19:16

포트폴리오를 작성하기 위해 프로젝트를 진행할 일이 생겼다. 그래서 나와 마음이 맞는 친구들과 함께 프로젝트를 진행하기로 했다. 설계단계에서 우리는 Spring으로 진행하기로 마음을 먹고 빌드 방식 중 Maven을 이용하기로 하였다.

 

개발툴은 STS로 진행해 주었다. 프로젝트 생성 방법은 Spring Legacy Project로 진행할 예정이다. 이제부터 차례대로 진행해 보도록 하자.

 

프로젝트를 진행할 때엔 블로그 작성을 생각치 못해서 프로젝트 생성 당시 작성해 둔 글을 통해 블로그를 작성한다.

 

Spring Legacy Project 특징

  • 라이브러리 설정을 자유롭게 할 수 있다.
  • 자유도가 높은만큼 설정해야 하는 양이 많다.
  • 프로젝트 설정을 위한 초반 작업이 많다.

메이븐 프로젝트 생성하기

1) Package Explorer → 오른쪽 마우스 클릭 New Spring Legacy Project

 

2) Project name을 작성해주고 TemplatesSrping MVC Project를 선택해준 다음 Next를 눌러준다.

3) 해당 팝업창은 선택한 템플릿에 대한 라이브러리를 다운로드하겠다는 뜻으로 Yes를 클릭해주면 된다.

에러발생

해당 창은 스프링 버전과 jdk 버전 간의 호환 문제로 인해 나오는 에러창이라고 한다. 나는 현재 오프라인으로 수업을 듣고 있는데 거기선 jdk 17로 진행해서 시험 삼아 개인 PC에 설정해 주었었는데 아무래도 그 때문인 것 같다.

 

Eclipse는 2020-09부터 jdk 11을 요구한다고 한다.

 

나는 환경변수를 17 대신 11로 변경해준 후 CMD로 확인해 보았는데 아직 17로 나와있어서 구글 검색을 하루종일 했었다. 이런저런 방법을 시도하며 나에게 맞는 해결법은 jdk 17을 제어판에서 삭제하는 것이었다.

삭제 후 CMD로 자바 버전 확인해 보니 11로 확인되었다.

에러 잡기 성공! 다음 단계로 이동

하루종일 여러 가지 방법을 접해봤는데 저게 문제였다니..😢 하여튼 제대로 작동해서 다행이다.

이 부분에서는 패키지명을 설정해 주면 된다.

4) 패키지명을 정한 후 밑에 있는 Finish를 클릭해 주면 된다. 생성된 패키지는 아래의 이미지처럼 구성된다.

 

위의 단계를 모두 진행했다면 성공적으로 Legacy Project가 만들어질 것이다. 기본 구성은 아래와 같다.

Legacy Project 기본 구성

기본 설정

버전 변경

1) 만들어진 프로젝트에서 마우스 오른쪽 클릭을 누른 후 맨 밑에 있는 Properties를 눌러준다.

변경 전) 기본으로 세팅되어있는 모습

2) Project Facets에서 Java 버전과 Dynamic Web Module 버전을 변경해 준다. 나는 JavaScript도 사용할 예정이라 Javascript도 체크해 주었다.

변경 후) 버전 변경 및 추가

3) 위의 작업을 모두 완료하였다면 Apply 클릭 후 Apply and Close를 클릭해 준다.

서버 설정

아래의 이미지처럼 해당 칸이 확인될 것이다. Server를 설정해 주어야 프로젝트를 실행할 수 있다. 서버를 설정해 주기 위해선 Servers가 필요하다. 만약 기본적으로 Servers가 없다면 [Window] → [Show View] → [Servers]를 클릭해 주면 된다.

내가 사용할 서버는 Tomcat이다. Tomcat 버전은 v9.0로 해주었다.

 

1) No servers are... 이라고 적혀있는 파란색 글씨를 클릭해도 되고, 위의 이미지처럼 Servers 내에서 오른쪽 마우스 클릭 한 후 [New] → [Server]를 클릭해 줘도 된다.

2) ApacheTomcat v9.0 ServerNext

 

오른쪽은 Server를 사용하지 않을 프로젝트를 넣어주면 되고, 왼쪽엔 Server를 돌릴 프로젝트를 넣어주면 된다. 현재는 example이라는 프로젝트를 실행시킬 것이기 때문에 Configured에 example 프로젝트를 넣어주었다.

3) 위의 이미지처럼 설정해 준 후 Finish 클릭

4) 위의 단계를 모두 완료했다면 Servers안에 내가 설정한 Server가 추가되어 있을 것이다.

서버 실행

1) 나는 서버 실행을 크롬으로 하기 때문에 [Window] → [Web Browser] → [Chrome]으로 설정해 주었다.

2) 프로젝트에서 오른쪽 마우스 클릭 → Run As → Run On Server를 해주면 해당 창이 뜬다. 창 아래에 있는 Next를 눌러주면 된다.

3) 방금 서버 설정할 때 나왔던 창과 동일하다. 서버를 실행할 프로젝트가 현재 프로젝트와 동일하다면 Finish를 클릭해 준다.

짝짝!👏👏 해당 페이지가 나온다면 성공이다!

 

여기서 재밌는 점!

URL을 보면 http://localhost:8081/example/ 으로 되어있다. 이는 패키지명을 지정할 때 맨 끝에 있는 명(example)을 따와 붙은 것이다. 나는 이 점을 몰랐다. 모른 상태에서 발견하니 너무 신기하다!🤓

화면을 만들지 않았는데 왜 나오지?

그것은 프로젝트를 생성할 때 자동으로 만들어주기 때문에 가능한 일이다.

 

프로젝트를 생성하면 HomeController가 자동으로 생성한다. HomeController에서 GetMapping을 통해 views 안에 있는 home.jsp를 찾아 화면으로 실행시켜 준 것이다.

package com.ex.example;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
}

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

<P>  The time on the server is ${serverTime}. </P>
</body>
</html>

마치며

프로젝트 생성이 진행되지 않는 에러를 만났을 때 하루종일 구글만 검색했다. 검색해도 제대로 된 해결방안이 없어서 많은 시도를 했었다. 심지어 다른 스케줄을 수행하고 있을 때도 해당 에러를 잡기 위해 폰으로 많은 검색을 진행하였다. 고생 끝에 해결 방법을 찾아 프로젝트 생성하는 글을 블로그에 작성할 수 있어서 기쁘다👏

참고

개인 Notion에 작성해 둔 내용과 다른 블로그를 참고하며 글을 작성하였다.

  • 글쓴이 개인 Notion
 

스프링 환경설정, 01 | Notion

🟣프로그램 설치

pool-cover-73b.notion.site

  • 에러 대처
 

Eclipse Spring legacy project 생성 오류 시 해결 방법

Could not initialize class com.thoughtworks.xstream.converters.collections.PropertiesConverter Eclipse에서 Spring legacy project 생성 오류 시 해결 방법. 여러 PC에서 동일한 에러가 발생했고 에러 코드에서 정확한 원인은 찾

bohemichan.tistory.com