๐ก ๋ณธ ๋ฌธ์๋๋ณธ ๋ฌธ์๋ 'VSCode Springboot ๊ฐ๋ฐํ๊ฒฝ ์ค์ (MacOS M1)'์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
Springboot์ ๊ณต๋ถํ๊ธฐ์ ์์ Macbook M1์์ ๊ฐ๋ฐํ๊ฒฝ์ ์ค์ ํ๋ ๊ณผ์ ์ ์ ๋ฆฌํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
1. VSCode Extension
VS Code๋ ๊ธฐ๋ณธ์ด ํ ์คํธ์๋ํฐ์ด๋ฏ๋ก, VS์ฝ๋๋ฅผ ์ดํด๋ฆฝ์ค๋ IntelliJ ๊ฐ์ IDE์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ์ํด์ ํ์ฅ๊ธฐ๋ฅ(Extensions)์ ์ค์นํ์ฌ์ผ ํฉ๋๋ค.
1.1 Extension Pack for Java
1.2 Spring Boot Extension Pack
+ Gradle for Java
Maven์ผ๋ก ๋น๋๋ฅผ ํ๋ค๋ฉด Extension Pack for Java์์ ์ด๋ฏธ Extension์ด ์ค์น ๋์์ง๋ง, Gradle๋ก ๋น๋ํ ๊ฑฐ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ Extension์ ์ค์นํด์ฃผ์ด์ผ ํฉ๋๋ค.
2. ํ๊ฒฝ ์ค์ ๋ฐ ์ค์น ํ์ธ
2.1 Java ํ๊ฒฝ ์ค์
VSCode ํ๊ฒฝ์ค์ (File -> Preferences -> Settings)์ผ๋ก ๊ฐ์ java.home ์ด๋ผ๊ณ ๊ฒ์ํด์ค๋๋ค. ์ดํ 'Edit in settings.json' ์ ํด๋ฆญํ์ฌ, ์ค์ JSON ํ์ผ์ ์ด์ด์ค๋๋ค.(์ด๋ฌํ User Setting์ด ์๋ค๋ฉด, Default Setting์ ๋ฐ๋ฆ ๋๋ค.)
2.2 Java ์ค์น ํ์ธ
์ดํ ํ๋ก์ ํธ ๋ด Hello.java๋ฅผ ์์ฑ ํ ์ปดํ์ผ ๋ฐ ์คํ์ ํด๋ด ๋๋ค.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello VS Code + Java");
}
}
์ ์์ ์ผ๋ก ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Hello VS Code + Java
2.3 Springboot ํ๊ฒฝ ์ค์
2.3.1 Springboot ํ๋ก์ ํธ ์์ฑ
Ctrl+Shift+ P๋ฅผ ๋๋ฅด๋ฉด, ์ด๋ฐ ์ปค๋งจ๋ ์ฐฝ์ด ํ๋ ๋จ๋๋ฐ, 'Spring initializer : Generate a Maven(or Gradle) Project' ๋ฅผ ์ ํํฉ๋๋ค. ์ดํ ๋ค์ํ ์ต์ ์ ์ ํํ ์ ์๋๋ฐ, ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ผ๋ก ์ง์ ํด์ฃผ์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
- Specify Spring Boot version: 2.77
- Specify project language: Java
- Input Group Id for your preject: com.example
- Input Artifact Id for your preject: demo
- Specify packaging type: Jar
- Specify Java version: 11
์ฌ๊ธฐ์ Java version์ ๋ค์๊ณผ ๊ฐ์ด ํ์ธํ ์ ์์ต๋๋ค.
$ java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Microsoft-25199 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Microsoft-25199 (build 11.0.12+7, mixed mode)
java์ javac์ ์ฐจ์ด์ ์ ๋ํด ์๊ณ ์ถ์ผ๋ฉด ๋ค์์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์ดํ 'Search for dependency'๋ฅผ ์ค์ ํด์ฃผ๋ ๋ค์ ์ฌ์ง๊ณผ ๊ฐ์ด ๋ค์ํ Dependencies ์ต์ ์ด ๋์ค๋๋ฐ... ์ฌ๊ธฐ์ ์ ๋ 'Spring Web', 'Spring Boot DevTools', 'Lombok'๋ฅผ ์ถ๊ฐํด์ฃผ์์ผ๋ฉฐ, ์ด๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๊ธฐ๋ณธ tomcat์ด ๋ด์ฅ๋ jar๋ก ํ๊ฒฝ๊ตฌ์ฑ์ ํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ์์ฑ ๋์์ผ๋ฉฐ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
% tree -L 7 ./demo
./demo
โโโ HELP.md
โโโ mvnw
โโโ mvnw.cmd
โโโ pom.xml
โโโ src
โโโ main
โ โโโ java
โ โ โโโ com
โ โ โโโ example
โ โ โโโ demo
โ โ โโโ DemoApplication.java
โ โโโ resources
โ โโโ application.properties
โโโ test
โโโ java
โโโ com
โโโ example
โโโ demo
โโโ DemoApplicationTests.java
2.3.2 ๋น๋ ํ๊ฒฝ ์ค์
Maven์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ธฐ์ Maven์ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ ์ค์ ํด์ฃผ์๋ฉด? ๋จผ์ apache maven ํํ์ด์ง ๋ด ๋ค์ด๋ก๋ ํ์ด์ง๋ก ๋ค์ด๊ฐ๋๋ค.
์ดํ binary ํ์ผ ์ค tar.gz ํ์ผ(apache-maven-3.8.7-bin.tar.gz)์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค(๋ฒ์ ์ ๋ฌ๋ผ๋ ๋ฌด๊ดํ๋ฉฐ ๋์ค์ ํ๊ฒฝ์ค์ ์์ ๋ฑ๋กํด์ฃผ๋ฉด ๋ฉ๋๋ค.).
์์ถํ์ผ์ ํผ ๋ค์, ํด๋น ํด๋๋ฅผ /opt ํด๋ ์๋์ ๋ก๋๋ค.
% cd /Users/choiseongjun/Downloads
% mv ./apache-maven-3.8.7 /opt
% pwd
/opt/apache-maven-3.8.7
% nano ~/.bashrc
...
# MAVEN
export MAVEN_HOME=/opt/apache-maven-3.8.7
export PATH=$MAVEN_HOME/bin:$PATH
% source ~/.bashrc
์ดํ VSCode ํ๊ฒฝ์ค์ (File -> Preferences -> Settings)์์ Java > Contifuration > Maven: User Settings์ ๋ค์์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํด์ค๋๋ค.
/opt/apache-maven-3.8.7/conf/settings.xml
์ดํ ๋ค์ VSCode๋ฅผ ์ฌ์คํํ๋ฉด ํ๋ก์ ํธ ๋ฐ ์ฌ์ด๋๋ฐ์ MAVEN์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
2.4 Springboot ์ค์น ํ์ธ
2.4.1 Test
๊ธฐ๋ณธ HTML์ ๋ง๋ค์ด ํ ์คํธํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. !<tab>ํ์ฌ ์์ฑ๋ ํ ํ๋ฆฟ์ <h1>Hello</h1>๋ง ์ถ๊ฐํด์ฃผ์์ต๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
์ด์ Maven์ผ๋ก ๋น๋๋ฅผ ํ ํ ์คํ์์ผ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋น๋๋ฅผ ํ ๋๋ clear ํ compile์ ํ๋ฉด ๋ฉ๋๋ค. ์ดํ 'DemoApplication.java'๋ฅผ ์ฐํด๋ฆญ ํ 'run java'๋ฅผ ํด๋ฆญํ๋ฉด ์๋์ ํ๋ฉด์ด ๋ณด์ ๋๋ค.
์ด์ localhost:8080์ผ๋ก ์ ์ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ฐ ๊ฒ์ ๋๋ค.
์ดํ package๋ฅผ ํ ๋์๋ 'clear' -> 'install' -> 'package' ์์๋ฅผ ์ง์ผ์ฃผ์ด์ผ ํฉ๋๋ค!
๊ฝค ์ค๋๊ฑธ๋ ธ๋ค์;; ์๊ณ ํ์ จ์ต๋๋ค!
์ฐธ๊ณ
- [Blog] VS Code๋ก Java, SpringBoot ๊ฐ๋ฐํ๊ฒฝ ์ธํ (1/2 - Java): https://1nnovator.tistory.com/45
- [Blog] VS Code๋ก Java, SpringBoot ๊ฐ๋ฐํ๊ฒฝ ์ธํ (2/2 - SpringBoot): https://1nnovator.tistory.com/46
- [Blog] ์คํ๋ง๋ถํธ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ -1: https://ddioniii.tistory.com/6