Hello Groovy!

Hello Groovy!

Gradle의 핵심! Groovy를 시작합니다


Groovy Tutorial




최근 빌드 툴에 대해 관심이 크게 생겨 본격적으로 Gradle 공부를 시작했다.

근데 왜 Maven이 아니고 Gradle이냐?

Maven은 XML 기반으로 돌아가는데 XML은 정적 데이터를 표현하기 위한 마크업 언어로

진짜 무지막지하게 딱딱한 언어다. 애초에 프로그래밍 언어가 아니기도 하고.

그래서 레거시 스프링에서 각종 설정 파일들(XML)을 만지다 보면 막말로 현타가 온다. 😒

원하는 대로 할 수 있는 게 생각보다 많지 않다고 느껴졌었다.

Gradle은 기반 언어로 Groovy를 채택했고, 간단한 빌드 스크립트만 작성해준다면

정말이지 별의별 짓거리를 다 할 수 있다. 그야말로 유연함의 끝판왕이라고 볼 수 있는 것 같다.

개발의 전 과정은 언어를 막론하고 대동소이하다.


  1. 소스 코드를 작성한다
  2. 컴파일러를 이용해 컴파일한다 (한방에 다 컴파일하냐, 줄마다 하냐 차이가 있긴 하다)
  3. 컴파일된 코드를 테스트한다
  4. 테스트 결과나 커버리지 측정 결과를 출력한다
  5. Javadoc과 같은 문서를 작성한다
  6. 빌드 - 클래스 파일과 리소스 파일을 패키징하여 압축한다
  7. 압축한 파일을 테스트 환경이나 스테이징 환경 혹은 운영 환경에 배포한다
  8. 압축 파일을 저장소에 등록한다


Gradle을 제대로 사용하면 여기서 과정 2~8을 모두 다 자동화해버릴 수 있다.

그렇다 보니 점점 개발에 대해 알아갈수록 빌드 툴, 특히 Gradle이 가진 매력이 성큼 다가왔다.

사실상 거의 전 과정에 Gradle이 매우 중요한 위치를 차지하고 있고,

여기에 젠킨스, 카프카 등을 다루는 DevOps영역이 쉽게 연동될 수 있다.

아무튼 Gradle을 입맛대로 써보려고 보니 Groovy와 GroovyDSL를 배워야겠더라.

그래서 문법을 봤는데 자바, 스칼라랑 크게 다를 게 없어서 별거 아니네? 싶더라.

아래는 그루비를 따로 설치하지 않아도 웹에서 사용해볼 수 있는 사이트이다.

https://www.tutorialspoint.com/execute_groovy_online.php


그루비 튜토리얼의 개요를 보면 이렇게 설명하고 있다.

  • 그루비는 정적 타이핑동적 타이핑을 모두 지원합니다
  • 그루비는 연산자 오버 로딩을 지원합니다
  • 그루비는 리스트와 연관 배열을 지원합니다
  • 그루비는 정규표현식을 지원합니다
  • 그루비는 XMLHTML 같은 다양한 마크업 언어를 지원합니다
  • 그루비의 문법은 자바와 매우 유사하므로 자바 엔지니어라면 쉽게 시작할 수 있습니다
  • 그루비는 자바의 라이브러리를 쉽게 사용할 수 있습니다
  • 그루비는 java.lang.Object를 상속합니다


오케이! 대충 알겠고 가뿐한 마음으로 3.0.8을 설치하고 Hello Groovy 구현에 들어갔다.

그리고 시작부터 무지막지한 삽질을 했다. 😂

아무리 문법을 봐도 틀린 게 없는데 안되는 것이다.

그루비 컴파일러에 내부적으로 문제가 있다는거 같은데 진짜 뭔소린가 싶었다.

한참의 구글링 끝에 알고 보니 Groovy는 JDK8과 호환이 된다는 것…. JDK11로 하고 있어서 안됐다. 😭

분명 설치란에는 JDK8+라고 돼있어서 11도 당연히 될 줄 알았는데

이럴거면 대체 왜 튜토리얼 JDK8+라고 써놓은거냐 😡


// file: 'HelloGroovy.groovy'
class Main {
    static void main(String[] args) {
        def s = 'Hello Groovy!'
        println(s)
    }
}


항상 Hello World에는 해당 언어의 정수가 들어가 있기 마련이다.

대략 보이는것은 파이썬의 향기가 살짝 나는 듯 하고, (def, 세미콜론 생략)

문법은 자바와 유사한 수준이 아니고 똑같은 수준이라고 봐도 무방할 것 같다.



© 2022. All rights reserved.