Gradle 프로젝트 생성



1. gradle init


gradle init

Select type of project to generate:   <== 프로젝트 유형 선택
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language: <== 프로그래밍에 사용할 언어 선택
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Scala
  6: Swift
Enter selection (default: Java) [1..6] 3

Split functionality across multiple subprojects?:
  1: no - only one application project
  2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2] 1

Select build script DSL: <== 빌드 스크립트 파일을 작성할 때 사용할 언어 선택
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Select test framework: <== 단위 테스트로 사용할 프레임워크 선택
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1

Project name (default: sksiltron_kafka): <== 프로젝트 이름 설정
Source package (default: sksiltron_kafka): com.example.app <== 자바 패키지 설정

> Task :init
Get more help with your project: https://docs.gradle.org/6.9.3/samples/sample_building_java_applications.html

BUILD SUCCESSFUL in 1m 37s
2 actionable tasks: 2 executed



2. tree 확인


tree

.
├── app
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── example
│       │   │           └── app
│       │   │               └── App.java
│       │   └── resources
│       └── test
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── app
│           │               └── AppTest.java
│           └── resources
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
  • gradlew: gradle로 빌드한 프로젝트를 누군가 서버에 올리고 동료가 클론했을 때, 동료는 굳이 따로 gradle을 설치하지 않아도 gradlew 파일이 gradle-wrapper.jar를 풀어서 실행할 수 있게 한다.
  • settings.gradle: 프로젝트 이름은 settings.gradle 파일 안에 rootProject.name = ‘프로젝트이름’으로 적혀 있다.



3. 프로젝트 실행


gradle run

gradle 도구가 클래스를 실행한다. 실행하는 메인을 build.gradle에 적어줘야 한다.

application {
    // Define the main class for the application.
    mainClassName = 'com.example.app.App'
}



자바 프로젝트 빌드


gradle build
  • 빌드 절차
    1. 소스 파일 컴파일
    2. 단위 테스트 수행
    3. .jar 아카이브 파일 생성
    4. 실행과 관련된 파일 생성
    5. .tar, .zip 배포 파일 생성
    6. /build/distributions/에 배포파일이 생긴다.
├── build
│   ├── distributions
│   │   ├── bitcamp-java-project.tar  <== Unix/Linux 사용자에게 배포하는 파일
│   │   └── bitcamp-java-project.zip  <== Windows 사용자에게 배포하는 파일

배포 파일의 압축을 플고 그 안의 스크립트 파일을 실행해보자.

➜ distributions git:(master) ✗ tar -xvf *.tar <== 압축파일 푸는 명령어 ➜ distributions git:(master) ✗ cd bitcamp-java-project ➜ bitcamp-java-project git:(master) ✗ tree . ├── bin │ ├── bitcamp-java-project │ └── bitcamp-java-project.bat └── lib ├── bitcamp-java-project.jar ├── checker-qual-2.11.1.jar ├── error_prone_annotations-2.3.4.jar ├── failureaccess-1.0.1.jar ├── guava-29.0-jre.jar ├── j2objc-annotations-1.3.jar ├── jsr305-3.0.2.jar └── listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar

2 directories, 10 files ➜ bitcamp-java-project git:(master) ✗ cd bin ➜ bin git:(master) ✗ ./bitcamp-java-project <== 스크립트 파일 실행 Hello world. 이때 Windows os의 경우 bat파일을 실행한다. 특히 우리가 만든 app.class 가 lib안의 bitcamp-java-project.jar에 있다. 여기에 있는 app.class를 실행하는 명령어가 bin에 있는 거!!! => 이게 바로 shell script이다. 이 스크립트는 고객 컴퓨터가 어떤지 모르니까 모든 경우의 수를 다 따져봐서 실행할 수 있게 만들어졌다. 개발자라면 그냥 jvm의 java 명령어로 실행할 수 있겠지만 빌드는 일반 사용자를 위해 배포파일을 만드는 과정이다. gradle clean: 빌드한 걸 삭제하는 명령어