스터디를 운좋게 잘 구해 '스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱 지음' 해당 책으로 스프링에 대한 기초 스터디를 시작했다. 책을 구매해 chap2까지 완료해 1.25 10시에 만나기로 했다.
책은 버전이 조금 다를 수도 있다? 이런 얘기를 했다.
첫 장은 인텔리제이에 스프링부트 프로젝트 설정하는 환경 설정에 관한 내용이다.
Java 8
gradle 4.8 ~ 4.10.2 ver을 사용한다고 한다.
~1.3 프로젝트 생성하기
ArtifactID : 프로젝트 이름
GroupID : 따로 생성하는 과정에서 설정하란 말..? 없었던것 같음.
1.4 그레이들 프로젝트를 스프링부트로 변경하기
- 대부분 지금까지 스프링 프로젝트는 spring initilazr(start.spring.io)를 사용해 생성했으나 이 책에선 build.gradle 파일의 의존관계를 알기 위해 그냥 비어있는 프로젝트를 생성하고 이후에 직접 설정한다. 사실 이전에 윤DB 과제할때 maven project이긴 했지만 dependencies에 복붙하는 내용, 스프링 입문 강의 들을때 이니셜라이저를 사용할때도 궁금하긴 했다 조금.
build.gradle에 들어갈 코드
buildscript{
ext{
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies{
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
ext : build.gradle에서 사용하는 전역 변수를 설정하겠다.
-> springBootVersion이라는 전역변수의 값이 '2.1.7.RELEASE'이다.
( 책에 버전이 다르다는 말이 이말인가 싶다. 최근에 본 스프링 이니셜라이져에선 2.7.8이 제일 오래된 버전이다.)
프로그인 의존성들을
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
io.spring.depedency-management는 스프링 부트의 의존성을 관리해주는 플로그인이라 필수.
위 4개의 플러그인은 자바와 스프링 부트를 사용시 필요한 필수 플러그인.
나머지 코드
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
34p부터 설명이 조금 뒤죽박죽인듯하다. 헷갈리네
1. repositories를 buildscript에도 쓰고 전체 파일에도 쓰는데 무엇..? 전자에는 mavenCenter(), jcenter() 둘 다 포함한다했는데 후자엔 mavenCenter()만 포함되어있다.
repositories : 각 의존성 라이브러리들을 어떤 원격저장소에서 받을지 설정
1. mavenCentral : 과거 많이 사용, 본인이 만든 라이브러리 업로드시 많은 과정 설정이 필요 -> 공유가 어렵다는 문제
2. jcenter : 라이브러리 업로드를 간단히 할 수 있게 개선. mavenCentral에도 업로드 가능하게 자동화. 현재 대부분 사용.
dependencies : 프로젝트 개발에 필요한 의존성들을 선언하는 곳
이곳에선 starter-web과 starter-test 두가지 선언
문제 발생 : complie method가 처리가 안된다.
> Could not find method compile() for arguments [org.springframework.boot:spring-boot-starter-web] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
complie메소드가 존재하지 않는 메소드라고 한다. 관련 블로그를 통해 원인을 찾아봤는데 gradle 버전 관련된 문제였다. compile, runtime, testCompile, testRuntime 이 메소드들은 Gradle 4.10 (18.08.27) 이후로 삭제된 메소드이다. 해당 메소드들은 implementation, runtimeOnly, testImplementation, testRuntimeOnly 으로 대체되었다고 한다.
Gradle Could not find method compile() 해결 방법
gradle 7.0 부터 compile 명령은 삭제되었습니다.
velog.io
책에서는 Gradle 4.10ver을 사용하고 있기에 여기서 두 가지 선택지가 존재한다. gradle의 버전을 4.10 이전으로 바꿔 사용하거나, 현재 버전에 맞게 바뀐 부분을 대체하면서 사용해야한다.
그래서 우선 gradle이 무엇인지에 대해 공부해보았다.
Gradle 관련 개념 정리 문서
https://youthing.tistory.com/49
Gradle 버전 이전으로 돌리는 방법
https://tychejin.tistory.com/388
[IntelliJ] Gradle 버전 확인 및 변경
Gradle 버전 확인 및 변경 1. Gradle 설정 확인 Settings > Build, Execution, Deploymen > Build Tools > Gradle - Use Gradle from 에서 ‘gradle-wrapper.properties’ file 을 선택 2. Gradle 버전 확인 및 변경 Project Window > gradle > wrap
tychejin.tistory.com
두 가지 모두 가능한 듯하다. 팀원들은 어떻게 진행했는지 물어보고 의견을 맞춰서 한쪽 방향으로 진행하면 좋을 것 같다.
우선은 Gradle 버전을 낮춰서 진행했다. 현재 버전이 7.5인데 4.10으로 낮춘다..? 아무튼 책에 나오는 내용이 이러하니 일단 낮췄다. 새로운 버전을 다운받는 과정이 길다. 낮추는데 생각보다 시간이 걸렸다
build.gradle 최종 내용.
buildscript{
ext{
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies{
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
1.5 인텔리제이에서 깃과 깃헙 사용하기
나는 미리 연동을 해놔서 바로 깃헙에 프로젝트 커밋/푸쉬를 했다.
,idea 디렉토리 제외 : 인텔리제이 프로젝트 실행시 자동으로 생성되는 파일 -> 불필요
--> .idea를 항상 제외하기 위해? .gitignore파일 사용해야함!
.ignore 플러그인을 설치 후 .gitignore 파일을 생성. 그곳에 .gradle .idea를 등록해 해당 파일은 항상 커밋 대상에서 제외를 시켜주자.
개선하고 싶은점?
다들 자바는 잘 다룰줄 아는지? 자바에 대한 메소드, 코드에 대한 구조도 같이 공부했으면 좋겠음.
'BE > 6기 코테이토 - Spring Study' 카테고리의 다른 글
3회 - Ch.5 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (0) | 2023.02.07 |
---|---|
3회 - Ch4 머스테치로 화면 구성하기 (0) | 2023.02.03 |
2회 Ch3. 스프링부트에서 JPA로 데이터베이스를 다뤄보자 (0) | 2023.01.27 |
1회 Ch2. 스프링 부트에서 테스트 코드를 작성하자. (0) | 2023.01.24 |
Gradle이란? (0) | 2023.01.23 |