«Tistory 블로그에서 작성했던 글»
이직도 준비할 겸 생각만 하고 있던 개인프로젝트를 진행했다.
이번 포스팅은 개인 프로젝트 개발환경 만들기다.
JDK7 까지만 써보았던 나로써는 8도 생소한데 바로 9를 해도 될까?
이 고민만 3일동안 한 것 같다.
어차피 Java8에 추가된 람다식, 스트림도 잘 모르는 나로써는 8이나 9나 둘 다 생소한 것은 똑같은 입장..
그래서 단지 Java9 이 최신버전이니까 쓰게 되었다.
Spring 또한 3.xx 버전만 써왔던 나로써는 이것도 2단계를 건너뛰게 되었다.
스프링 부트는 말로 많이 듣긴 했지만 한번도 써본 적이 없었고,
개발환경을 자동으로 만든다는 것 자체에 거부감이 들어서 기본 Spring으로 설정을 하게 되었다.
(개발자가 개발에만 집중을 할 수 있게 해준다곤 하지만, 내가 사용하지 않는 불필요한 것들이 있을수도 있고,
안에 들어간 게 뭔지는 알아야 써먹을 수 있다고 생각했기 때문이다)
… 는 그럴듯한 핑계를 대지만, 그저 내 입맛에 맞게 설정하는걸 좋아해서 스프링부트는 쓰지 않았다.
내가 세팅한 프로젝트 스펙은 아래와 같다.
Project Spec
1
2
3
4
o STS 3.9
o JDK 9
o Spring 5.0.0
o Gradle 4.3.1
필요한 파일 다운로드
JDK
STS
위의 파일을 다운로드 받아서 설치한 다음 아래를 따라오기 바란다.
적절한 위치에 해당 파일들을 설치 하셨다면, 이제 STS를 실행한다.
Gradle 프로젝트 생성을 위해서 Gradle Plugin을 설치하자.
Help -> Eclipse Marketplace.. 클릭
Gradle을 검색하면, 코끼리 모양의 Buildship 어쩌구 하는게 있다.
이게 gradle plugin이다. Install 버튼을 눌러서 설치.
설치가 끝나면 STS를 재시작 해준다.
재시작 후 이제 프로젝트를 생성해보자.
프로젝트명과 워크스페이스 위치를 확인하고 Next..
Repositories 가 저장될 경로를 선택해주고 Finish
아.. 맥에서 세팅을 해보는데 계속 Could not determine java version from ‘9.0.1’ 에러가 나서 삽질을 반복하다가..
설정이 제대로 안먹었나 해서 재부팅을 했는데, 2시간동안 포스팅 작성한게 날아갔다.. 완전 멘붕…..
혹시 위와 같은 오류가 나시는 분들은 아래 링크에서 버그 픽스 된 것(milestone) 을 설치하시면 됩니다.(Help -> Install New Software.. 클릭 후 해당 링크에 있는 Update Site 항목에 있는 URL을 복사해서 붙여넣으면 된다.)
정상적으로 생성이 되었다면 아래와 같이 나온다.
이제 이 JAVA 프로젝트를 Spring MVC 프로젝트로 변경을 시켜보자.
Maven의 pom.xml과 같은 역할을 하는게 build.gradle 파일 이라고 생각하면 접근이 훨씬 쉬울듯 하다.
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/** This build file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java Library project to get you started.
* For more details take a look at the Java Libraries chapter in the Gradle
* user guide available at https://docs.gradle.org/4.3/userguide/java_library_plugin.html
*/
// 설치할 플러그인 정보 설정
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
// Set Java Compile Encoding
compileJava.options.encoding = 'UTF-8'
// Project Version
version = '1.0.0'
// Version Information
def ver = [ spring: '5.0.0.RELEASE',
servletAPI: '3.1.0',
jstl: '1.2.1',
commonsCollections: '3.2.1',
junit: '4.12',
slf4j: '1.7.12']
// Set Eclipse Gradle Build
eclipse {
project.natures "org.springsource.ide.eclipse.gradle.core.nature"
wtp {
// Set Project Facets
facet { facet name: 'jst.web', version: '3.1'
facet name: 'jst.java', version: '9'
}
}
}
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
// 저장소 설정. jcenter() 혹은 mavenCentral() 사용하거나 별도의 저장소가 있다면 그것으로 지정해준다.
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
//mavenCentral()
}
// 라이브러리 정보
dependencies {
providedCompile "javax.servlet:javax.servlet-api:${ver.servletAPI}"
compile "org.springframework:spring-webmvc:${ver.spring}"
compile "org.slf4j:slf4j-api:${ver.slf4j}"
compile group: 'commons-collections', name: 'commons-collections', version: "${ver.commonsCollections}"
compile group: 'javax.servlet.jsp.jstl', name: 'javax.servlet.jsp.jstl-api', version:"${ver.jstl}"
testCompile group: 'junit', name: 'junit', version: "${ver.junit}"
}
test {
systemProperties 'property': 'value'
}
// War 파일 생성 정보
war {
baseName = 'SpringGradleProject' version = '$-BUILD-SNAPSHOT'
}
크게 어려운 내용은 없으니 주석을 한번 보시라
(자세한 주석을 확인하고 싶으신분은 Dev숑 님이 정리하신 포스팅을 참고 하시고,
Gradle에 대해 자세히 알고 싶으신분은 권남 님의 Gradle 위키 글들을 참고 하세요.)
이제 설정 정보를 적용해보자.
refresh를 하면 위에서 지정했던 로컬의 repositories 경로에 필요한 파일들을 다운로드 한다.
혹시 위와 같이 설정을 했는데
Java compiler level does not match the version of the installed Java project facet.
에러가 나실 경우,
Navigator에서 org.eclipse.wst.common.project.facet.core.xml 파일을 열어보시면
<installedfacet=”jst.web”version=”2.4”/>
<installedfacet=”jst.java”version=”1.9”/>
<installedfacet=”jst.web”version=”3.1”/>
<installedfacet=”jst.java”version=”9”/>이런식으로 들어가 있을 것 입니다.
project facet 설정을 자동으로 잡아주는 것 같은데,
Gradle의 버그인지, STS의 버그인지, 아님 내가 문제인지..한참 찾아도 명확한 답은 찾을수가 없었습니다.
검색을 해보니 build.gradle 파일의 facet 설정하는 부분에 아래와 같이 facets 을 초기화 시켜주면 된다고 해서 해봤는데 잘 됩니다..facet {
facets = []
facet name: ‘jst.web’, version: ‘3.1’
facet name: ‘jst.java’, version: ‘9’
}
이제 Gradle Task에서 Build를 진행 해보자.
정상적으로 빌드가 완료되는 것을 확인할 수 있다.
(참고로 저 콘솔의 마지막 줄에서 yes 를 입력하게 되면 gradle 사이트에서 내가 빌드한 정보를 볼 수 있다.)
:: 현재까지 완성된 프로젝트 Git Repo ::
https://github.com/Chaedae/SpringGradleProject/tree/JavaGradle
세부 스프링 설정은 다음 포스팅에…..