IntelliJ Gradle 프로젝트 생성 (Hello World)

From_A_To_Z·2022년 9월 15일
0

프로젝트를 진행하게 되면 자신이 작성하는 코드 내용 외에 다른 라이브러를 활용하여 필요한 기능을 개발하게 된다. 이 때 사용하는 라이브러리를 다운받아서 필요한 경로 설정하는 등 일련의 라이플사이클 관리를 개발자가 직접 수행할 수도 있으나 이러한 작업은 많은 공수가 발생함과 동시에 휴먼 에러가 발생할 가능성이 있다. 이러한 문제를 해결하기 위해 프로젝트의 라이프사이클을 관리해주는 빌드 자동화 툴이 도입되었으며 대표적으로 Ant, Maven, Gralde 등이 있다. 이번 포스팅에서는 이러한 도구 중 Gradle을 통해 실제로 프로젝트를 생성하고 빌드하는 예시를 수행하고자 한다.

1. Gradle이란?

Gradle은 그루비를 이용한 빌드 자동화 시스템이다. Groovy와 유사한 도메인 언어를 채용하였으며, 현재 안드로이드 앱을 만드는데 필요한 안드로이드 스튜디오의 공식 빌드 시스템이기도 하다. Java, C/C++, 파이썬 등과 같은 여러 가지 언어를 지원한다.

2. Gradle vs. Maven

(1) Flexibility (유연함)

Google은 Android용 공식 빌드 도구로 Gradle을 선택하였다. 이는 Gradle이 단순한 빌드 스크립트가 아닌 확장 가능한 방식으로 모델링되었기 때문이다. Gradle과 Maven을 비교했을 때 Maven은 매우 엄격한 모델로 설계되었으나 Gradle은 상대적으로 유연하게 빌드 설정을 수행할 수 있다.

(2) Performance (성능)

Gradle은 3개의 상위 매커니즘 (증분성, 빌드 캐시, Gradle 데몬)을 통해 Maven과 비교했을 때 최소 2배, 대규모 빌드의 경우 최대 100배 이상의 성능 차이를 발생시킬 수 있다.

(3) User Experience (사용자 경험)

Maven의 경우 실제로 개발되고 도입된지 Gradle과 비교해서 오랜 시간이 되었기 때문에 IDE를 통한 더 많은 기능을 제공해주고 있다. 하지만 Gradle의 IDE 지원을 계속해서 빠르게 개선되고 있으며 CLI (사용자 명령줄 인터페이스) 기반의 최적한 서비스를 제공한다.

(4) Dependency Management (종속성 관리)

두 빌드 시스템 모두 구성 가능한 리포지토리에서 종속성을 해결하는 기본 제공 기능을 제공한다. 둘 다 종속성을 로컬로 캐시하고 병렬로 다운로드할 수 있다.

라이브러리 소비자로서 Maven은 버전에 의해서만 종속성을 재정의할 수 있다. Gradle은 한 번 선언하고 프로젝트 전체에서 원치 않는 종속성을 처리할 수 있는 사용자 지정 가능한 종속성 선택 및 대체 규칙 을 제공헌다. 이 대체 메커니즘을 통해 Gradle은 여러 소스 프로젝트를 함께 빌드하여 복합 빌드 를 만들 수 있다 .

3. IntelliJ Gradle Project 생성 (Java)

(1) 프로젝트 생성

시작 화면에서 [New Project], 혹은 [File]->[New]->[Project] 메뉴를 통해 프로젝트를 생성한다.

(2) 빌드 시스템 선택

선택화면에서 해당 Project의 Java SDK 버전 및 빌드 시스템 (Gradle)을 선택한다.

(3) 프로젝트 세부 설정

프로젝트의 이름, 경로, 그리고 해당 프로젝트의 Artifact 정보를 입력한다.

(4) Java Main Class 생성 (Hello World)

해당 프로젝트에서 실행한 Main Class를 생성한다. src-> main -> java 에서 새로운 Java Class를 생성한다.

생성한 프로젝트 내에 main 함수를 정의하고 내부에서 "Hello World!"를 출력하는 출력함수를 작성한다.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

5. Project 실행

해당 클래스 선택 후 Run 실행 시, 해당 실행값이 콘솔 상에 출력되는 것을 확인할 수 있다.

참고

https://ko.wikipedia.org/wiki/Gradle
https://gradle.org/maven-vs-gradle/

profile
What goes around comes around.

0개의 댓글