[classpath] Gradle의 빌드 스크립트 블록의 목적

나는 Gradle을 처음 사용하고 문서를 읽고 있지만 그 일부를 이해하지 못합니다. 이 부품 중 하나가 buildscript블록 과 연결되어 있습니다. 그 목적은 무엇입니까?

빌드 스크립트가 외부 라이브러리를 사용해야하는 경우 빌드 스크립트 자체의 스크립트 클래스 경로에 추가 할 수 있습니다. 빌드 스크립트 클래스 경로를 선언하는 클로저를 전달하여 buildscript () 메서드를 사용하여이 작업을 수행합니다.

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
  }
}

좋아, 그러나 차이점은 무엇입니까?

repositories {
  mavenCentral()
}
dependencies {
  compile group: 'commons-codec', name: 'commons-codec', version: '1.2'
}

예를 들어 왜 buildscript? 를 사용해야 합니까?



답변

buildScript플러그인 블록 결정 작업 클래스 및 기타 클래스는에서 사용할 수있는 빌드 스크립트의 나머지 . buildScript블록이 없으면 Gradle과 함께 제공되는 모든 것을 즉시 사용할 수 있습니다. 타사 플러그인, 작업 클래스 또는 기타 클래스 (빌드 스크립트에서)를 추가로 사용하려면 buildScript블록에 해당 종속성을 지정해야합니다 .


답변

  • 글로벌 레벨 dependenciesrepositories섹션에는 소스를 빌드하고 소스를 실행하는 데 필요한 종속성이 나열됩니다.
  • buildscript위한 build.gradle파일 자체. 따라서 여기에는 RPM 생성에 대한 종속성 Dockerfile과 모든 종속 항목에서 작업을 실행하기위한 기타 종속성이 포함됩니다.build.gradle

답변

Peter의 답변에 감사드립니다 …하지만 나머지 빌드 스크립트 가 대답과 문서에서 강조한 의미가 무엇인지 즉시 나에게 분명하지 않았습니다 .

일반적으로 종속 기능을 가져 오는 것은 Java 프로그램 또는 작성중인 다른 프로그램에서 사용하기위한 것입니다. Spring에서 가져 오는 것은 빌드 스크립트가 아니라 Java 프로그램에서 사용된다고 말합니다. 에 넣어 buildscript의존성이 Gradle을 빌드 자체 내에서 사용할 수있는 폐쇄 보장합니다. 출력 프로그램이 아닙니다.


답변

“buildscript”구성 섹션은 gradle 자체를위한 것입니다 (즉, gradle이 빌드를 수행하는 방법에 대한 변경). 따라서이 섹션에는 일반적으로 Android Gradle 플러그인이 포함됩니다.


답변

조금 높은 수준이지만 희망이 도움이됩니다.

나를 위해, 빌딩 블록 , 방법 및 작업 이 무엇인지 이해하기 시작하면 명확한 구별이 형성되기 시작했습니다 . 구문이 어떻게 생겼는지, 어떻게 구성 할 수 있는지 등. 그래서이 모든 과정을 거치는 것이 좋습니다. 그 후에는이 구문을 이해하기 시작할 수 있습니다.

그런 다음 build.gradle 객체 (Project 클래스의 인스턴스)의 유형이 무엇인지 알아야 build.gradle 파일에 무엇이 있는지 알 수 있습니다. 그것은 ‘buildScript’와 다른 사람들이 어디에서 왔는지 대답 할 것입니다. 또한 기능 / 기능을 확장하려면 (Android라고 말하면) 플러그인 이 어떻게 도움이 되는지 확인하십시오 .

마지막으로 클로저, 스크립트를 이해하는 데 필수적인 개념 인 델리게이트에 대해 설명 하는 매우 유용한 자습서가 있습니다.


답변

Android 최상위 gradle 파일을 시연하여 조금 더 설명합니다.

buildscript {
    // this is where we are going to find the libraries defined in "dependencies block" at below
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

    // everything listed in the dependencies is actually a plugin, which we'll do "apply plugin" in our module level gradle file.
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2' // this is android gradle plugin
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // kotlin gradle plugin
    }
}

모듈 레벨 gradle 파일

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

“플러그인”이란 무엇입니까? 그것들은 플러그인 인터페이스를 구현하는 Java 클래스 일뿐입니다. 인터페이스 아래에는 이름이 다른 여러 작업 개체를 추가하는 “적용”방법이 있습니다. 작업은 워크 플로를 구현할 수있는 클래스입니다. 예를 들어 빌드 작업은 앱 빌드 흐름으로 구성됩니다.

그렇다면 빌드 스크립트는 무엇을합니까? 플러그인을 찾을 위치를 정의합니다. 플러그인은 무엇을합니까? 여러 작업을 포함합니다. 작업은 무엇을합니까? 빌드, 설치, 보푸라기 등을 제공합니다.

내 이해가 잘못되었을 수 있습니다. 오해의 소지가있는 것을 발견하면 언제든지 주저하지 마십시오.


답변