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 라이브러리를 추가합니다. 구현하려면 의존성 구성에 testImplementation 및 testRuntime 파트를 추가하십시오 .
추가 테스트 블록을 기반으로합니다.
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과 관련된 일부 구성 파일이 있습니다 .