Gradle-빌드 스크립트
Gradle은 두 가지를 처리하기위한 스크립트 파일을 빌드합니다. 하나는projects 그리고 또 하나는 tasks. 모든 Gradle 빌드는 하나 이상의 프로젝트를 나타냅니다. 프로젝트는 라이브러리 JAR 또는 웹 애플리케이션을 나타내거나 다른 프로젝트에서 생성 한 JAR에서 어셈블 된 ZIP을 나타낼 수 있습니다. 간단히 말해 프로젝트는 서로 다른 작업으로 구성됩니다. 작업은 빌드가 수행하는 작업을 의미합니다. 태스크는 일부 클래스를 컴파일하거나, JAR을 작성하거나, Javadoc을 생성하거나, 일부 아카이브를 저장소에 게시하는 것일 수 있습니다.
Gradle 사용 Groovy language 스크립트 작성을 위해.
빌드 스크립트 작성
Gradle은 빌드를 설명하기 위해 DSL (Domain Specific Language)을 제공합니다. 빌드를 더 쉽게 설명 할 수 있도록 Groovy 언어를 사용합니다. Gradle의 각 빌드 스크립트는 UTF-8을 사용하여 인코딩되고 오프라인으로 저장되며 build.gradle로 이름이 지정됩니다.
build.gradle
Groovy 스크립트를 사용하여 작업 및 프로젝트에 대해 설명합니다. Gradle 명령어를 사용하여 Gradle 빌드를 실행할 수 있습니다. 이 명령은 다음과 같은 파일을 찾습니다.build.gradle. 인쇄하는 작은 스크립트를 나타내는 다음 예제를 살펴보십시오.tutorialspoint. 다음 스크립트를 복사하여 다음 파일에 저장하십시오.build.gradle. 이 빌드 스크립트는 tutorialspoint 문자열을 인쇄하는 데 사용되는 작업 이름 hello를 정의합니다.
task hello {
doLast {
println 'tutorialspoint'
}
}
명령 프롬프트에서 다음 명령을 실행하십시오. 위의 스크립트를 실행합니다. build.gradle 파일이 저장된 곳에서 이것을 실행해야합니다.
C:\> gradle –q hello
산출:
tutorialspoint
작업이 ANT의 대상과 유사하게 작동한다고 생각하면 맞습니다. Gradle 작업은 ANT 대상과 동일합니다.
바로 가기 (기호를 나타냄)를 지정하여이 hello 작업을 단순화 할 수 있습니다. <<) 로 doLast성명서. 위의 작업에이 바로 가기를 추가하면hello 다음 스크립트와 같습니다.
task hello << {
println 'tutorialspoint'
}
위와 같이 위의 스크립트를 다음과 같이 실행할 수 있습니다. gradle –q hello 명령.
등급 스크립트는 주로 두 개의 실제 개체를 사용했습니다. 하나는 프로젝트 개체이고 다른 하나는 스크립트 개체입니다.
Project Object− 각 스크립트는 하나 또는 여러 프로젝트에 대해 설명합니다. 실행하는 동안이 스크립트는 프로젝트 개체를 구성합니다. 일부 메서드를 호출하고 프로젝트 개체에 위임 된 빌드 스크립트에서 속성을 사용할 수 있습니다.
Script Object− Gradle은 스크립트 인터페이스를 구현하는 클래스로 스크립트 코드를 가져 와서 실행합니다. 즉, 스크립트 인터페이스에 의해 선언 된 모든 속성과 메서드를 스크립트에서 사용할 수 있습니다.
다음 표는 목록을 정의합니다. standard project properties. 이러한 모든 속성은 빌드 스크립트에서 사용할 수 있습니다.
Sr. No. | 이름 | 유형 | 기본값 |
---|---|---|---|
1 | 계획 | 계획 | 프로젝트 인스턴스 |
2 | 이름 | 끈 | 프로젝트 디렉토리의 이름입니다. |
삼 | 통로 | 끈 | 프로젝트의 절대 경로입니다. |
4 | 기술 | 끈 | 프로젝트에 대한 설명입니다. |
5 | projectDir | 파일 | 빌드 스크립트가 포함 된 디렉토리입니다. |
6 | buildDir | 파일 | projectDir / 빌드 |
7 | 그룹 | 목적 | 지정되지 않음 |
8 | 버전 | 목적 | 지정되지 않음 |
9 | 개미 | AntBuilder | AntBuilder 인스턴스 |
Groovy 기초
Gradle 빌드 스크립트는 전체 길이 Groovy API를 사용합니다. 스타트 업으로서 다음 예제를 살펴보십시오.
다음 예제는 문자열을 대문자로 변환하는 방법을 설명합니다.
아래 주어진 코드를 복사하여 저장하십시오. build.gradle 파일.
task upper << {
String expString = 'TUTORIALS point'
println "Original: " + expString
println "Upper case: " + expString.toUpperCase()
}
명령 프롬프트에서 다음 명령을 실행하십시오. 위의 주어진 스크립트를 실행합니다. build.gradle 파일이 저장된 곳에서 이것을 실행해야합니다.
C:\> gradle –q upper
산출:
Original: TUTORIALS point
Upper case: TUTORIALS POINT
다음 예에서는 암시 적 매개 변수 ($ it)의 값을 4 번 인쇄하는 방법을 설명합니다.
다음 코드를 복사하여 저장하십시오. build.gradle 파일.
task count << {
4.times {
print "$it "
}
}
명령 프롬프트에서 다음 명령을 실행하십시오. 위의 주어진 스크립트를 실행합니다. build.gradle 파일이 저장된 곳에서 이것을 실행해야합니다.
$ gradle –q count
산출:
0 1 2 3
Groovy 언어는 아래에서 설명하는 몇 가지 중요한 기능에서 많은 기능을 제공합니다.
Groovy JDK 방법
Groovy는 표준 Java 클래스에 유용한 메소드를 많이 추가합니다. 예를 들어 JDK의 Iterable API는each() Iterable 인터페이스의 요소를 반복하는 메서드입니다.
다음 코드를 복사하여 저장하십시오. build.gradle 파일.
task groovyJDK << {
String myName = "Marc";
myName.each() {
println "${it}"
};
}
명령 프롬프트에서 다음 명령을 실행하십시오. 위의 주어진 스크립트를 실행합니다. build.gradle 파일이 저장되는 곳에 이것을 실행해야합니다.
C:\> gradle –q groovyJDK
산출:
M
a
r
c
속성 접근 자
참조를 지정하여 특정 속성의 적절한 getter 및 setter 메서드에 자동으로 액세스 할 수 있습니다.
다음 스 니펫은 속성의 getter 및 setter 메서드 구문을 정의합니다. buildDir.
// Using a getter method
println project.buildDir
println getProject().getBuildDir()
// Using a setter method
project.buildDir = 'target'
getProject().setBuildDir('target')
메서드 호출의 선택적 괄호
Groovy는 메서드 호출에 괄호가 선택 사항 인 메서드 호출의 특수 기능을 포함합니다. 이 기능은 Gradle 스크립팅에도 적용됩니다.
다음 구문을 살펴보십시오. 메서드 호출을 정의합니다.systemProperty 의 test 목적.
test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')
방법의 마지막 매개 변수 인 폐쇄
Gradle DSL은 여러 곳에서 클로저를 사용합니다. 메서드의 마지막 매개 변수가 클로저 인 경우 메서드 호출 후에 클로저를 배치 할 수 있습니다.
다음 스 니펫은 Closure가 repositories () 메서드 매개 변수로 사용하는 구문을 정의합니다.
repositories {
println "in a closure"
}
repositories() {
println "in a closure"
}
repositories({ println "in a closure" })
기본 가져 오기
Gradle은 Gradle 스크립트에 import 문 세트를 자동으로 추가합니다. 다음 목록은 Gradle 스크립트에 대한 기본 가져 오기 패키지를 보여줍니다.
import org.gradle.*
import org.gradle.api.*
import org.gradle.api.artifacts.*
import org.gradle.api.artifacts.cache.*
import org.gradle.api.artifacts.component.*
import org.gradle.api.artifacts.dsl.*
import org.gradle.api.artifacts.ivy.*
import org.gradle.api.artifacts.maven.*
import org.gradle.api.artifacts.query.*
import org.gradle.api.artifacts.repositories.*
import org.gradle.api.artifacts.result.*
import org.gradle.api.component.*
import org.gradle.api.credentials.*
import org.gradle.api.distribution.*
import org.gradle.api.distribution.plugins.*
import org.gradle.api.dsl.*
import org.gradle.api.execution.*
import org.gradle.api.file.*
import org.gradle.api.initialization.*
import org.gradle.api.initialization.dsl.*
import org.gradle.api.invocation.*
import org.gradle.api.java.archives.*
import org.gradle.api.logging.*
import org.gradle.api.plugins.*
import org.gradle.api.plugins.announce.*
import org.gradle.api.plugins.antlr.*
import org.gradle.api.plugins.buildcomparison.gradle.*
import org.gradle.api.plugins.jetty.*
import org.gradle.api.plugins.osgi.*
import org.gradle.api.plugins.quality.*
import org.gradle.api.plugins.scala.*
import org.gradle.api.plugins.sonar.*
import org.gradle.api.plugins.sonar.model.*
import org.gradle.api.publish.*
import org.gradle.api.publish.ivy.*
import org.gradle.api.publish.ivy.plugins.*
import org.gradle.api.publish.ivy.tasks.*
import org.gradle.api.publish.maven.*
import org.gradle.api.publish.maven.plugins.*
import org.gradle.api.publish.maven.tasks.*
import org.gradle.api.publish.plugins.*
import org.gradle.api.reporting.*
import org.gradle.api.reporting.components.*
import org.gradle.api.reporting.dependencies.*
import org.gradle.api.reporting.model.*
import org.gradle.api.reporting.plugins.*
import org.gradle.api.resources.*
import org.gradle.api.specs.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.ant.*
import org.gradle.api.tasks.application.*
import org.gradle.api.tasks.bundling.*
import org.gradle.api.tasks.compile.*
import org.gradle.api.tasks.diagnostics.*
import org.gradle.api.tasks.incremental.*
import org.gradle.api.tasks.javadoc.*
import org.gradle.api.tasks.scala.*
import org.gradle.api.tasks.testing.*
import org.gradle.api.tasks.testing.junit.*
import org.gradle.api.tasks.testing.testng.*
import org.gradle.api.tasks.util.*
import org.gradle.api.tasks.wrapper.*
import org.gradle.authentication.*
import org.gradle.authentication.http.*
import org.gradle.buildinit.plugins.*
import org.gradle.buildinit.tasks.*
import org.gradle.external.javadoc.*
import org.gradle.ide.cdt.*
import org.gradle.ide.cdt.tasks.*
import org.gradle.ide.visualstudio.*
import org.gradle.ide.visualstudio.plugins.*
import org.gradle.ide.visualstudio.tasks.*
import org.gradle.ivy.*
import org.gradle.jvm.*
import org.gradle.jvm.application.scripts.*
import org.gradle.jvm.application.tasks.*
import org.gradle.jvm.platform.*
import org.gradle.jvm.plugins.*
import org.gradle.jvm.tasks.*
import org.gradle.jvm.tasks.api.*
import org.gradle.jvm.test.*
import org.gradle.jvm.toolchain.*
import org.gradle.language.assembler.*
import org.gradle.language.assembler.plugins.*
import org.gradle.language.assembler.tasks.*
import org.gradle.language.base.*
import org.gradle.language.base.artifact.*
import org.gradle.language.base.plugins.*
import org.gradle.language.base.sources.*
import org.gradle.language.c.*
import org.gradle.language.c.plugins.*
import org.gradle.language.c.tasks.*
import org.gradle.language.coffeescript.*
import org.gradle.language.cpp.*
import org.gradle.language.cpp.plugins.*
import org.gradle.language.cpp.tasks.*
import org.gradle.language.java.*
import org.gradle.language.java.artifact.*
import org.gradle.language.java.plugins.*
import org.gradle.language.java.tasks.*
import org.gradle.language.javascript.*
import org.gradle.language.jvm.*
import org.gradle.language.jvm.plugins.*
import org.gradle.language.jvm.tasks.*
import org.gradle.language.nativeplatform.*
import org.gradle.language.nativeplatform.tasks.*
import org.gradle.language.objectivec.*
import org.gradle.language.objectivec.plugins.*
import org.gradle.language.objectivec.tasks.*
import org.gradle.language.objectivecpp.*
import org.gradle.language.objectivecpp.plugins.*
import org.gradle.language.objectivecpp.tasks.*
import org.gradle.language.rc.*
import org.gradle.language.rc.plugins.*
import org.gradle.language.rc.tasks.*
import org.gradle.language.routes.*
import org.gradle.language.scala.*
import org.gradle.language.scala.plugins.*
import org.gradle.language.scala.tasks.*
import org.gradle.language.scala.toolchain.*
import org.gradle.language.twirl.*
import org.gradle.maven.*
import org.gradle.model.*
import org.gradle.nativeplatform.*
import org.gradle.nativeplatform.platform.*
import org.gradle.nativeplatform.plugins.*
import org.gradle.nativeplatform.tasks.*
import org.gradle.nativeplatform.test.*
import org.gradle.nativeplatform.test.cunit.*
import org.gradle.nativeplatform.test.cunit.plugins.*
import org.gradle.nativeplatform.test.cunit.tasks.*
import org.gradle.nativeplatform.test.googletest.*
import org.gradle.nativeplatform.test.googletest.plugins.*
import org.gradle.nativeplatform.test.plugins.*
import org.gradle.nativeplatform.test.tasks.*
import org.gradle.nativeplatform.toolchain.*
import org.gradle.nativeplatform.toolchain.plugins.*
import org.gradle.platform.base.*
import org.gradle.platform.base.binary
import org.gradle.platform.base.component.*
import org.gradle.platform.base.plugins.*
import org.gradle.platform.base.test.*
import org.gradle.play.*
import org.gradle.play.distribution.*
import org.gradle.play.platform.*
import org.gradle.play.plugins.*
import org.gradle.play.tasks.*
import org.gradle.play.toolchain.*
import org.gradle.plugin.use.*
import org.gradle.plugins.ear.*
import org.gradle.plugins.ear.descriptor.*
import org.gradle.plugins.ide.api.*
import org.gradle.plugins.ide.eclipse.*
import org.gradle.plugins.ide.idea.*
import org.gradle.plugins.javascript.base.*
import org.gradle.plugins.javascript.coffeescript.*
import org.gradle.plugins.javascript.envjs.*
import org.gradle.plugins.javascript.envjs.browser.*
import org.gradle.plugins.javascript.envjs.http.*
import org.gradle.plugins.javascript.envjs.http.simple.*
import org.gradle.plugins.javascript.jshint.*
import org.gradle.plugins.javascript.rhino.*
import org.gradle.plugins.javascript.rhino.worker.*
import org.gradle.plugins.signing.*
import org.gradle.plugins.signing.signatory.*
import org.gradle.plugins.signing.signatory.pgp.*
import org.gradle.plugins.signing.type.*
import org.gradle.plugins.signing.type.pgp.*
import org.gradle.process.*
import org.gradle.sonar.runner.*
import org.gradle.sonar.runner.plugins.*
import org.gradle.sonar.runner.tasks.*
import org.gradle.testing.jacoco.plugins.*
import org.gradle.testing.jacoco.tasks.*
import org.gradle.testkit.runner.*
import org.gradle.util.*