스프링 프로젝트를 하기 위해서는 자바 개발 도구(JDK), 빌드도구(Maven이나 Gradle), 자바 통합 개발 환경(IDE)가 필요하다. 이번 포스트에서는 스프링 프로젝트 개발을 위한 환경을 만들어 볼 것이다.
현재 필자가 사용하는 OS는 Windows OS이므로 이를 기준으로 기술한다.
스프링 버전에 따라 필요한 최소 자바 버전이 다르다.
스프링 4.3
은자바 6
이상이 요구되고,
스프링 5
는자바 8
이상이 요구된다.현업에서 사용하는 개발 관련 기술들은 대부분 아직 자바 8에 맞춰 동작한다.
공부하는 입장에서 여러 버전 문제를 피하기 위해서는 자바 8을 설치하도록 한다.
JDK 다운로드✔️
https://www.oracle.com/java/technologies/downloads/ 에서 JDK를 다운로드할 수 있다.
JDK를 설치한 후 다음 단계로 넘어가자.환경 변수 설정✔️
내 PC 우클릭 > 속성메뉴 > 고급 시스템 설정 > 고급 탭 > 환경 변수
환경변수 대화창에서 환경변수 JAVA_HOME을 등록하고 값으로 JDK 설치 폴더를 지정한다.
자바 버전 설정✔️
여러 버전의 자바를 설치했다면 PATH 환경변수를 이용해 java 명령어 버전을 지정할 수 있다.
PATH 환경변수 값 맨 앞에 %JAVA_HOME%\bin;을 추가하면 명령 프롬프트에서 java 명령어를 실행할 시 JAVA_HOME에 해당하는 버전 폴더의 bin 폴더에 위치한 java 프로그램을 실행한다.
확인✔️
설정이 잘 되었는지 확인하기 위해 명령 프롬프트에 아래 명령을 실행하자.
java -version
올바르게 설정했다면 자바 버전 정보를 출력할 것이다.
사실 이클립스나 인텔리제이를 사용할 거라면 Maven을 따로 설치하지 않아도 상관없으니 넘어가도 좋다.
어플리케이션을 개발할 때 메이븐을 사용하면 톰캣을 없이 간단한 메이븐 설정만으로도 실행할 수 있다고 하니, 공부하는 입장에서 이를 위해 설치했다.
Maven 다운로드✔️
https://maven.apache.org/download.cgi 에 방문하여 메이븐 최신 버전을 다운로드 하고 찾기 쉬운 위치에 압축을 푼다.
환경 변수 설정✔️
명령 프롬프트에서 메이븐을 실행할 수 있도록 PATH 환경변수를 설정한다. 환경변수 대화창에서 환경변수 MAVEN_HOME을 등록하고 값으로 압축을 푼 메이븐의 bin 폴더를 지정한다. %MAVEN_HOME%\bin;를 PATH 환경변수 값 맨 앞에 추가하면 된다.
확인✔️
여기까지 완료했다면 명령 프롬프트를 켜고 다음 명령어를 입력해보자.
mvn -version
올바르게 설정했다면 메이븐 버전 정보를 출력할 것이다.
Gradle✔️
그레이들을 설치하고 싶다면 위 과정에서 다운로드 사이트 주소를 바꿔 진행하면 된다. https://gradle.org/releases/ 사이트에서 최신 버전 그레이들을 다운로드 할 수 있다.
그레이들 설치 및 설정에 잘 따라왔는지 확인하기 위해 명령 프롬프트에 다음 명령어를 입력해보자.
gradle -version
올바르게 설정했다면 그레이들 버전 정보를 출력할 것이다.
이클립스와 인텔리제이는 자바 IDE(통합 개발 환경) 중 가장 많이 사용되는 개발 도구들이다.
Eclipse✔️
https://www.eclipse.org/downloads/eclipse-packages/ 사이트에서 "Eclipse IDE for Enterprise Java and Web Developers" 패키지를 다운로드 하고 원하는 곳에 압축을 풀면 eclipse 폴더가 생긴다.
폴더 내 eclipse.exe 파일을 실행하면 이클립스가 실행된다.IntelliJ✔️
https://www.jetbrains.com/ko-kr/idea/download/?section=windows 사이트에서 유료/무료 버전 인텔리제이를 다운로드 할 수 있다.
여기까지 완료했다면 프로젝트 시작 준비가 끝난 것이다. 이제 정말 프로젝트를 시작해보자.
앞으로 프로젝트를 진행할 폴더를 만든다.
~:\spring\sp-chap01\src\main\java
위 경로를 참고하여 Workspace 내에 폴더를 만든다.
src\main\java
이 폴더 구조는 메이븐에 정의되어 있는 기본 폴더 구조다. java 폴더에는 자바 소스 코드가 위치할 것이다. 그 외에 다른 자원 파일이 필요하다면 src\main\resources 폴더를 만들어 해당 파일을 위치시키면 되겠다.
폴더를 생성했다면 자바 프로젝트를 구성하기 위해 빌드 도구를 사용할 것이다. 메이븐(Maven)과 그레이들(Gradle) 중 마음에 드는 빌드 도구를 선택하여 프로젝트를 구성해보자.
메이븐 프로젝트에서 핵심은 pom.xml 파일이다.
pom.xml은 메이븐 프로젝트에 대한 설정 정보를 관리하는 파일로서 필요로하는 모듈이나 플러그인 등에 대한 설정을 담는다.pom.xml 파일 작성✔️
우선 sp-chap01 폴더에 아래와 같은 pom.xml 파일을 작성한다.
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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</groupId> <artifactId>sp-chap01</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <encoding>utf-8</encoding> </configuration> </plugin> </plugins> </build> </project>
자세히 살펴보기✔️
<artifactId>sp-chap01</artifactId>
위 설정은 프로젝트의 식별자를 지정하는 부분이다. 여기서 프로젝트 폴더의 이름을 사용하면 된다.
아래는 의존(dependency) 설정 부분이다.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency>
메이븐은 한 개의 모듈을 아티팩트라는 단위로 관리한다.
위 설정은 spring-context라는 식별자를 가진 5.0.2.RELEASE 버전의 아티팩트에 대한 의존을 추가한 것이다.
의존을 추가한다는 것은 클래스 패스에 spring-context 모듈을 추가한다는 것을 뜻한다.<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <encoding>utf-8</encoding> </configuration> </plugin>
위 코드는 11 버전을 기준으로 자바 소스를 컴파일하고 결과 클래스를 생성한다는 내용을 담고 있다. 메이븐 컴파일러 플러그인 버전이 3.8.3은 없고 3.8.1에서 3.9.0으로 넘어가길래 3.8.1로 설정했다. 사용할 인코딩은 UTF-8로 설정했다.
jar 파일 다운로드✔️
의존 설정을 마쳤으나 클래스 패스에 jar 파일을 추가하려면 sp-chap01이라는 프로젝트 폴더로 이동하여 아래와 같이 명령을 실행해야 한다.
mvn compile
그럼 pom.xml 파일에 설정대로 필요한 jar 파일을 원격 리포지토리에서 사용자의 로컬 리포지토리로 다운로드 할 것이다.
그 외에도 메이븐과 관련된 파일이 다운로드에 포함된다.
메이븐은 의존 대상이 다시 의존하는 대상까지도 의존 대상에 포함하는 의존 전이(Trancitive Dependencies)를 지원한다.
그레이들 프로젝트를 생성하는 과정은 메이븐과 크게 다르지 않다.
build.gradle 작성✔️
pom.xml 파일 대신 아래처럼 build.gradle 파일을 작성하면 된다.
apply plugin: 'java' sourceCompatibility = 11 targetCompatibility = 11 compileJava.options.encoding = "UTF-8" repositories { mavenCentral() } dependencies { implementation 'org.springframework:spring-context:5.0.2.RELEASE' } wrapper { gradleVersion = '8.1.1' }
자세히 살펴보기✔️
apply plugin: 'java'
위는 그레이들 java 플러그인을 적용한다는 코드다.
sourceCompatibility = 11 targetCompatibility = 11 compileJava.options.encoding = "UTF-8"
위는 소스와 컴파일 결과를 11 버전에 맞추고 소스 코드 인코딩으로 UTF-8을 사용한다는 내용이다.
repositories { mavenCentral() }
위는 의존 모듈을 메이븐 중앙 리포지토리에서 다운로드한다는 코드다.
dependencies { implementation 'org.springframework:spring-context:5.0.2.RELEASE' }
위는 spring-context 모듈에 대한 의존을 설정하는 부분이다.
wrapper { gradleVersion = '8.1.1' }
위는 그레이들 래퍼 설정 부분으로, 소스를 공유할 때 그레이들 설치 없이 그레이들 명령어를 실행할 수 있는 래퍼를 생성해주는 역할을 한다.
그레이들 래퍼 파일 생성✔️
프로젝트 루트 폴더 sp-chap01 에서 다음과 같이 명령어를 실행하여 래퍼 파일을 생성하자.
gradle wrapper
성공하면 여러 파일과 폴더가 생성된다.
gradlew compileJava
위 명령을 입력하면 아래 화면을 확인할 수 있다.
앞서 생성한 래퍼 실행 파일을 이용해서 실행하는 모습이다.
이제 생성한 프로젝트를 자바 통합 개발 환경인 eclipse/IntelliJ로 임포트 할 것이다. 메이븐과 그레이들 중 본인이 선택한 도구에 해당하는 설명을 보도록 한다.
Maven 프로젝트 import✔️
File
>Import...
메뉴를 사용한다.
임포트 화면에서Maven
/Existing Maven Projects
를 선택한다.
Browse...
를 클릭하여 ap-chap01 폴더를 선택하고finish
버튼을 클릭하면 이클립스가 프로젝트를 임포트하기 시작한다.
Gradle 프로젝트 import✔️
File
>Import...
메뉴를 사용한다.
임포트 화면에서Gradle
/Existing Gradle Projects
를 선택하고Next
버튼을 누른다.
다음 화면에서도Next
버튼을 누른다.
Browse...
를 클릭하여 ap-chap01 폴더를 선택한다.
임포트 옵션에서도Next
버튼을 누른다.
finish
버튼을 클릭하면 이클립스가 프로젝트를 임포트하기 시작한다.
두 빌드 도구 취향에 맞게 사용하면 된다.
Maven 프로젝트 import✔️
File
>new
>Import...
>Project from Existing Sources...
메뉴를 사용한다.
Maven
을 선택하고create
한다.Gradle 프로젝트 import✔️
마찬가지로
File
>new
>Import...
>Project from Existing Sources...
메뉴를 사용한다.
Gradle
을 선택하고create
한다.
이번 포스트에서 프로젝트 시작에 대해 자세히 다뤄보았으니, 다음 포스트에서는 본격적으로 spring으로 간단한 프로그램을 작성해보도록 하겠다.
- 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 | 최범균님 저