STS 실습 환경 구성 - LENATeam/bom-project GitHub Wiki
원하는 workspace 경로에서 아래 명령어로 spring-6-recipes 코드를 clone 해준다.
$ git clone https://github.com/Apress/spring-6-recipes.git
- JDK19 설치
- Gradle 설치(https://gradle.org/)
아래 사이트에서 설치하고자 하는 OS에 맞는 파일을 다운로드 받는다. 본 문서는 STS 4.19.0 버전을 기준으로 작성한다. https://spring.io/tools
다운로드 받은 파일의 압축을 해제한다.
파일명이 너무 길어 압축해제에 실패할 경우 아래와 같이 조치한다.
압축 해제된 경로 하위 sts-4.19.0.RELEASE 폴더 하위에 SpringToolSuite4.exe 를 실행한다. 원하는 경로로 Workspace 경로를 지정해주고 Launch 버튼을 클릭한다.
STS 초기화면이다.
Import Projects.. 를 선택한다.
Gradle > Existing Gradle Project 를 선택한다.
소스코드를 받은 위치로 디렉터리를 지정한다.
Import preview 내용을 확인한 뒤 Finish 를 선택하여 프로젝트를 가져온다.
Windows > Preferences 메뉴로 들어가서 좌측 목록에서 Java > Installed JREs 를 선택하고 Add 버튼을 선택하여 Java 19버전을 추가해준다.
Standard VM 을 선택하고 다음으로 넘어간다.
Java 19를 설치한 디렉터리를 지정해준다.
추가한 JDK 19 를 체크해준다.
gradle.properties에 아래와 같이 java 위치(org.gradle.java.home)를 추가해 준다.
group=com.apress.spring6recipes
version=6.0.0-SNAPSHOT
org.gradle.java.home=C:\\Program Files\\Java\\jdk-19
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8
org.gradle.warning.mode=all
Windows 환경에서 실행할 경우 아래와 같이 settings.gradle을 수정한다.
settings.gradle(기존)
def getProjectName(String dir) {
return (dir - (rootDir.toString() + "/")).replaceAll("/", ":")
}
settings.gradle(변경 후)
def getProjectName(String dir) {
def projName = (dir - (rootDir.toString() + "/")).replaceAll('/', ':')
if ( projName.equals(dir) ) {
projName = (dir - (rootDir.toString() + "\\")).replaceAll('\\\\', ':')
}
return projName
}
gradlew 를 실행한다.
PS C:\Users\user\Documents\workspace\spring-6-recipes> .\gradlew
Welcome to Gradle 7.6!
Here are the highlights of this release:
- Added support for Java 19.
- Introduced `--rerun` flag for individual task rerun.
- Improved dependency block for test suites to be strongly typed.
- Added a pluggable system for Java toolchains provisioning.
For more details see https://docs.gradle.org/7.6/release-notes.html
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
> Task :help
Welcome to Gradle 7.6.
To run a build, run gradlew <task> ...
To see a list of available tasks, run gradlew tasks
To see more detail about a task, run gradlew help --task <task>
To see a list of command-line options, run gradlew --help
For more detail on using Gradle, see https://docs.gradle.org/7.6/userguide/command_line_interface.html
For troubleshooting, visit https://help.gradle.org
BUILD SUCCESSFUL in 1m 36s
1 actionable task: 1 executed
아래와 같이 sub project를 build 할 수 있다.
PS C:\Users\user\Documents\workspace\spring-6-recipes> .\gradlew ch02:recipe_2_1_i:build
BUILD SUCCESSFUL in 19s
9 actionable tasks: 2 executed, 7 up-to-date
docker 태스크로 docker 이미지를 생성한다.
> Task :ch02:recipe_2_1_i:docker
#0 building with "default" instance using docker driverk <task>
<===========--> 86% EXECUTING [4s]
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile:ed
#1 transferring dockerfile: 912B 0.0s done
#1 DONE 0.2s
> :ch13
#2 [internal] load .dockerignore
#2 transferring context: 2B 0.0s done
#2 DONE 0.2s
#3 [internal] load metadata for docker.io/library/eclipse-temurin:19-jdk-alpine
#3 DONE 4.4s
#4 [1/8] FROM docker.io/library/eclipse-temurin:19-jdk-alpine@sha256:7e4fc4b3ae1bd8ed4205bfd76e4ebeefca3904653f8ee3ba6ac2427cc28b03c9
#4 resolve docker.io/library/eclipse-temurin:19-jdk-alpine@sha256:7e4fc4b3ae1bd8ed4205bfd76e4ebeefca3904653f8ee3ba6ac2427cc28b03c9 0.1s done
...
(중략)
...
#13 exporting to image
#13 exporting layers
#13 exporting layers 0.4s done
#13 writing image sha256:d1c8f990f2661800bb2c7cfd1dbab63a1008769bcde2681a611a0d63846e0097 done
#13 naming to docker.io/s6r/court-web:recipe_2_1_i 0.0s done
#13 DONE 0.4s
What's Next?
View summary of image vulnerabilities and recommendations ??docker scout quickview
<=
BUILD SUCCESSFUL in 1m 6s
11 actionable tasks: 2 executed, 9 up-to-date
dockerRun 태스크로 docker 컨테이너를 실행한다.
PS C:\workspace-spring-tool-suite-4-4.19.0.RELEASE\spring-6-recipes> .\gradlew ch02:recipe_2_1_i:dockerRun
> Task :ch02:recipe_2_1_i:dockerRun
4984edb0898ac6f78abcd12a4ea7f73722994f32b79fa8a7da62f55870ba34dc
> Task :ch02:recipe_2_1_i:dockerRunStatus
Docker container 's6r-court-web-recipe_2_1_i' is RUNNING.
BUILD SUCCESSFUL in 5s
2 actionable tasks: 2 executed