tools & libs/빌드툴(maven,gradle)

[gradle]gradle을 위한 살짝 Groovy

  • -

gradle을 위한 살짝 Groovy

Maven의 경우 XML을 기반으로 설정을 구성하지만 gradle은 Groovy라는 녀석을 이용한다. 빌드 툴을 사용하기 위해 또다른 언어를 학습해야한다는게 부담스럽지만  다행히 자바를 이미 알고 있다면Groovy는 학습 곡선이 매우 낮다. gradle외에도 간단한 테스트 코드나 SPOCK 같은 테스트 프레임워크 등에서도 자주 사용된 발을 담가보자.

Groovy는

 - JVM 상에서 실행되는 스크립트 언어로

 - Java와 유사한 문법 구조를 가지며

 - Java와 호환성이 아주 좋다.

이번 포스트에서는 build.gradle을 편집하기위해 필요한 정도의 살짝 Groovy를 다루도록 한다.

 

Groovy의 간단한 문법

 

Groovy는 자바와 비슷하니까 대충 자바처럼 써보면 되는데 아래 내용은 자바와 다른 점 위주로 정리해본다.

 

문자열 표현

Groovy의 문자열 표현은 python과 유사하다.

  • 작은 따옴표('')는 단순히 문자열을 출력할 때 사용된다.
  • 큰 따옴표("") 역시 문자열 출력에 사용되는데 내부에 $변수명 형태의 템플릿 문자열을 구성할 수 있다.
  • 3개로 묶기(''' ~~ ''' 또는 """ ~~ """)는 여러줄을 표현할 때 사용할 수 있다.

 

세미 퀄른

Groovy의 세미퀄론은 필수가 아니므로 생략 가능하다.

println 'Hello World';
println 'Hello World'

 

변수 선언의 타입 생략

Groovy는 변수 선언 시 타입을 선언할 수도 있지만 def 키워드를 이용하면 타입을 생략할 수도 있다.

String name = '홍길동'
def name='임꺽정'

 

리턴 타입

Groovy 메서드에서는 리턴 타입을 명시할 필요 없고 return 키워드를 사용할 필요도 없다. 메서드 선언 시 def라고 키워드를 명시하면 알아서 연결된다.

def getName(){
    '홍길동'
}

assert getName() == '홍길동'

 

입력사항

Groovy에서는 함수 호출 시 괄호 역시 필수가 아니어서 생략 가능하다.

println ('Hello World')
println 'Hello World'

 

클로저

closure는 재사용 가능한 코드 블록으로 파라미터로 사용될 수도 있고 실행할 수도 있다.

기본형태는 마치 lambda 처럼 {arg1, arg2 -> statements}의 형태를 갖는다.

def closure1 = {println 'Hello Groovy'}
// 실행
closure1()

def closure2 = {num1, num2 -> println num1+num2}
closure2(1, 2)

def method(name){
  def greeting = 'hello '
  return {println greeting + name}
}

def colsure3 = method('홍길동')
closure3()

 

샘플 코드

class Test {
    def method(){
        def name = '홍길동'
        String msg = "안녕 $name? 반가워"
        def multi = """$msg
여러 줄이 필요할 때도 있지?
그럴 때는 그냥 쭉 쓰면 되~~
"""
        println multi
    }

    static void main(String[] args) {
        Test t = new Test();
        t.method();

        t.closure1()
        t.closure2(1, 2)
        def colsure3 = t.method('홍길동')
        colsure3()
    }
    def closure1 = { println 'Hello Groovy' }

    def closure2 = { int num1, int num2 -> println num1 + num2 }


    def method(name) {
        def greeting = 'hello '
        return { println greeting + name }
    }
}

'tools & libs > 빌드툴(maven,gradle)' 카테고리의 다른 글

[maven] maven lief cycle 관리  (0) 2022.04.12
[maven] maven을 활용한 의존성 관리  (0) 2022.04.11
[maven]서버에 배포하기  (0) 2021.08.22
[gradle]build.gradle  (0) 2021.01.30
[maven] 주요 properties 태그  (0) 2020.10.26
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.