1. 개요

이 사용방법(예제)는 Gradle을 사용하여 자바 기반 프로젝트를 빌드하는 방법에 대한 실용적인 사용방법(예제)를 제공합니다 .

프로젝트 구조를 수동으로 생성하고, 초기 구성을 수행하고, Java 플러그인 및 JUnit 의존성을 추가하는 단계를 설명합니다. 그런 다음 애플리케이션을 빌드하고 실행합니다.

마지막으로, 마지막 섹션에서는 Gradle Build Init 플러그인을 사용하여이를 수행하는 방법에 대한 예제를 제공합니다. 몇 가지 기본 소개는 Gradle 소개 문서에서도 찾을 수 있습니다 .

2. 자바 프로젝트 구조

자바 프로젝트를 수동으로 만들고 빌드를 준비하기 전에 Gradle설치 해야합니다 .

이름이 gradle-employee-app 인 PowerShell 콘솔을 사용하여 프로젝트 폴더 만들기를 시작하겠습니다 .

> mkdir gradle-employee-app

그런 다음 프로젝트 폴더로 이동하여 하위 폴더를 만듭니다.

> mkdir src/main/java/employee

결과 출력이 표시됩니다.

Directory: D:\gradle-employee-app\src\main\java

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        4/10/2020  12:14 PM                employee

위의 프로젝트 구조 내에서 두 개의 클래스를 만들어 보겠습니다. 하나는 이름, 이메일 주소, 생년월일과 같은 데이터 가있는 간단한 Employee 클래스입니다.

public class Employee {
    String name;
    String emailAddress;
    int yearOfBirth;
}

두 번째는 Employee  데이터 를 인쇄 하는 기본 Employee 앱 클래스입니다 .

public class EmployeeApp {

    public static void main(String[] args){
        Employee employee = new Employee();

        employee.name = "John";
        employee.emailAddress = "john@baeldung.com";
        employee.yearOfBirth = 1978;

        System.out.println("Name: " + employee.name);
        System.out.println("Email Address: " + employee.emailAddress);
        System.out.println("Year Of Birth:" + employee.yearOfBirth);
    }
}

3. 자바 프로젝트 빌드

다음으로 Java 프로젝트 빌드 하기 위해 프로젝트 루트 폴더에 build.gradle  구성 파일을 만듭니다 .

다음은 PowerShell 명령 줄에 있습니다.

Echo > build.gradle

입력 매개 변수와 관련된 다음 단계를 건너 뜁니다.

cmdlet Write-Output at command pipeline position 1
Supply values for the following parameters:
InputObject[0]:

빌드가 성공하려면 Application Plugin 을 추가해야합니다  .

plugins {
    id 'application'
}

그런 다음 애플리케이션 플러그인을 적용 하고 메인 클래스의 정규화 된 이름을 추가합니다 .

apply plugin: 'application'
mainClassName = 'employee.EmployeeApp'

각 프로젝트는 작업으로 구성됩니다 . 작업은 소스 코드 컴파일과 같이 빌드가 수행하는 작업을 나타냅니다.

예를 들어 완료된 프로젝트 구성에 대한 메시지를 인쇄하는 작업을 구성 파일에 추가 할 수 있습니다.

println 'This is executed during configuration phase'
task configured {
    println 'The project is configured'
}

일반적으로 gradle 빌드 는 기본 작업이며 가장 많이 사용되는 작업입니다. 이 작업은 코드를 컴파일, 테스트 및 조합하여 JAR 파일로 만듭니다. 빌드는 다음을 입력하여 시작됩니다.

> gradle build

위의 명령을 실행하여 다음을 출력합니다.

> Configure project :
This is executed during configuration phase
The project is configured
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 up-to-date

빌드 결과를 보려면 클래스, 배포, 라이브러리 및 보고서와 같은 하위 폴더가 포함 된 빌드 폴더를 살펴 보겠습니다 . Tree / F를 입력하면 빌드 폴더의 구조가 제공됩니다.

├───build
│   ├───classes
│   │   └───java
│   │       ├───main
│   │       │   └───employee
│   │       │           Employee.class
│   │       │           EmployeeApp.class
│   │       │
│   │       └───test
│   │           └───employee
│   │                   EmployeeAppTest.class
│   │
│   ├───distributions
│   │       gradle-employee-app.tar
│   │       gradle-employee-app.zip
       
│   ├───libs
│   │       gradle-employee-app.jar
│   │
│   ├───reports
│   │   └───tests
│   │       └───test
│   │           │   index.html
│   │           │
│   │           ├───classes
│   │           │       employee.EmployeeAppTest.html

보시다시피, 클래스 하위 폴더에는 이전에 만든 두 개의 컴파일 된 .class 파일이 있습니다. 분포의 하위 폴더는 응용 프로그램 항아리 패키지의 보관 된 버전이 포함되어 있습니다. 그리고 l ibs 는 우리 애플리케이션의 jar 파일을 유지합니다.

일반적으로, 나는 N 보고서 , JUnit 테스트를 실행할 때 생성되는 파일이 있습니다. 

이제 gradle run 을 입력하여 Java 프로젝트를 실행할 준비가되었습니다 . 종료시 응용 프로그램을 실행 한 결과 :

> Configure project :
This is executed during configuration phase
The project is configured

> Task :run
Name: John
Email Address: john@baeldung.com
Year Of Birth:1978

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date

3.1. Gradle 래퍼를 사용하여 빌드

Gradle Wrapper는 Gradle의 선언 된 버전을 호출하는 스크립트입니다 .

먼저 build.gradle 파일 에서 래퍼 작업을 정의 해 보겠습니다 .

task wrapper(type: Wrapper){
    gradleVersion = '5.3.1'
}

Power Shell의 gradle 래퍼사용 하여이 작업을 실행 해 보겠습니다 .

> Configure project :
This is executed during configuration phase
The project is configured

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

/ gradle / wrapper 위치에 있는 파일을 포함하여 프로젝트 폴더 아래에 여러 파일이 생성됩니다 .

│   gradlew
│   gradlew.bat
├───gradle
│   └───wrapper
│           gradle-wrapper.jar
│           gradle-wrapper.properties
  • gradlew : Linux에서 Gradle 작업을 만드는 데 사용되는 셸 스크립트
  • gradlew.bat : Windows 사용자가 Gradle 작업을 생성 하는 .bat 스크립트
  • gradle-wrapper.jar : 애플리케이션의 래퍼 실행 가능한 jar
  • gradle-wrapper.properties : 래퍼 구성을위한 속성 파일

4. Java 의존성 추가 및 간단한 테스트 실행

먼저 구성 파일에서 의존성 jar를 다운로드하는 원격 저장소를 설정해야합니다. 대부분의 경우 이러한 저장소는 mavenCentral () 또는 jcenter () 입니다. 두 번째를 선택하겠습니다.

repositories {
    jcenter()
}

리포지토리가 생성되면 다운로드 할 의존성을 지정할 수 있습니다. 이 예에서는 Apache Commons 및 JUnit 라이브러리를 추가합니다. 구현하려면 의존성 구성에 testImplementationtestRuntime 파트를 추가하십시오 .

추가 테스트 블록을 기반으로합니다.

dependencies {
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.11'
    testImplementation('junit:junit:4.13')
    testRuntime('junit:junit:4.13')
}
test {
    useJUnit()
}

완료되면 간단한 테스트에서 JUnit의 작업을 시도해 봅시다. src 폴더로 이동 하여 테스트를위한 하위 폴더를 만듭니다.

src> mkdir test/java/employee

마지막 하위 폴더 내에 EmployeeAppTest.java를 생성 해 보겠습니다 .

public class EmployeeAppTest {

    @Test
    public void testData() {

        Employee testEmp = this.getEmployeeTest();
        assertEquals(testEmp.name, "John");
        assertEquals(testEmp.emailAddress, "john@baeldung.com");
        assertEquals(testEmp.yearOfBirth, 1978);
    }

    private Employee getEmployeeTest() {

        Employee employee = new Employee();
        employee.name = "John";
        employee.emailAddress = "john@baeldung.com";
        employee.yearOfBirth = 1978;

        return employee;
    }
}

이전과 마찬가지로 명령 줄에서 gradle clean 테스트실행하면 문제없이 테스트가 통과됩니다.

5. Gradle을 사용한 자바 프로젝트 초기화

이 섹션에서는 지금까지 살펴본 Java 애플리케이션을 만들고 빌드하는 단계를 설명합니다. 차이점은 이번에는 Gradle Build Init Plugin의 도움으로 작업한다는 것입니다.

새 프로젝트 폴더를 만들고 이름을 gradle-java-example로 지정합니다. 그런 다음 빈 프로젝트 폴더로 전환하고 init 스크립트를 실행합니다.

> gradle init

Gradle은 몇 가지 질문으로 우리에게 질문하고 프로젝트 생성 옵션을 제공합니다. 첫 번째 질문은 생성하려는 프로젝트 유형입니다.

Select type of project to generate:
  1: basic
  2: cpp-application
  3: cpp-library
  4: groovy-application
  5: groovy-library
  6: java-application
  7: java-library
  8: kotlin-application
  9: kotlin-library
  10: scala-library
Select build script DSL:
  1: groovy
  2: kotlin
Enter selection [1..10] 6

프로젝트 유형으로 옵션 6을 선택한 다음 빌드 스크립트에 대해 첫 번째 옵션 (groovy)을 선택하십시오 .

다음으로 질문 List이 나타납니다.

Select test framework:
  1: junit
  2: testng
  3: spock
Enter selection (default: junit) [1..3] 1

Project name (default: gradle-java-example):
Source package (default: gradle.java.example): employee

BUILD SUCCESSFUL in 57m 45s
2 actionable tasks: 2 executed

여기에서 테스트 프레임 워크에 대한 첫 번째 옵션 인 junit을 선택합니다. 프로젝트의 기본 이름을 선택하고 소스 패키지 이름으로 "employee"를 입력합니다.

/ src 프로젝트 폴더 내의 전체 디렉토리 구조를 보려면 Power Shell에 Tree / F입력 해 보겠습니다 .

├───main
│   ├───java
│   │   └───employee
│   │           App.java
│   │
│   └───resources
└───test
    ├───java
    │   └───employee
    │           AppTest.java
    └───resources

우리가 프로젝트를 구축하는 경우 마지막으로, Gradle을 실행, 우리가 얻을 "안녕하세요"를 종료시 :

> Task :run
Hello world.

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date

6. 결론

이 기사에서는 Gradle을 사용하여 Java 애플리케이션을 만들고 빌드하는 두 가지 방법을 제시했습니다. 사실 우리는 수동 작업을했고 명령 줄에서 응용 프로그램을 컴파일하고 빌드하는 데 시간이 걸렸습니다. 이 경우 애플리케이션이 여러 라이브러리를 사용하는 경우 일부 필수 패키지 및 클래스 가져 오기에주의해야합니다.

반면에 Gradle init 스크립트에는 프로젝트의 가벼운 골격을 생성하는 기능과 Gradle과 관련된 일부 구성 파일이 있습니다 .

이 기사의 소스 코드는 GitHub에서 사용할 수  있습니다 .