ProgramingTip

Gradle 빌드 전개에서 일반적인 방법 추출

bestdevel 2020. 10. 20. 07:57
반응형

Gradle 빌드 전개에서 일반적인 방법 추출


build.gradle몇 가지 작업을 만든 Gradle 빌드 펼쳐보기 ( )가 있습니다. 대부분의 메서드 호출로 구성됩니다. 호출 된 메소드는 빌드 펼쳐도 있습니다.

이제 상황은 다음과 달라집니다.

다른 작업을 포함하고,이를 사용하는 것을 사용하는 것입니다. 따라서 일반적으로 "일반적인 방법"을 어떤 식으로 사용하여 추출하여 새로 만드는 펼쳐지는 복사하는 대신 쉽게 할 수 있습니다.

Gradle이 PHP라면 다음과 같은 것이 카드입니다.

//script content
...
require("common-methods.gradle");
...
//more script content

하지만 물론 불가능합니다. 아니면?

어떻게 결과를 어떻게 얻을 수 있습니까? 이를 수행하는 가장 좋은 방법은 무엇입니까? 이미 Gradle 문서를 읽었지만 어떤 방법이 가장 안전한지 문서를 읽었습니다.

미리 감사드립니다!


최신 정보 :

다른 파일에서 메서드를 추출했습니다.

(사용 apply from: 'common-methods.gradle'),

따라서 구조는 다음과 가변적입니다.

parent/
      /build.gradle              // The original build script
      /common-methods.gradle     // The extracted methods
      /gradle.properties         // Properties used by the build script

에서 작업을 실행 한 후 build.gradle새로운 문제에 부딪 혔습니다. 분명히 방법이 .NET에있을 때 인식되지 않습니다 common-methods.gradle.

그것을 고치는 방법에 대한 아이디어가 있습니까?


방법을 공유하는 것은 불가능하지만 클로저를 포함하는 추가 속성을 공유 할 수 있습니다. 예를 들어, 선언 ext.foo = { ... }common-methods.gradle사용 전개 apply from:를 적용하고 다음에 폐쇄를 호출 foo().


Peter의 답변을 바탕으로 다음 과 같이 방법을 내 보냅니다.

내용 helpers/common-methods.gradle:

// Define methods as usual
def commonMethod1(param) {
    return true
}
def commonMethod2(param) {
    return true
}

// Export methods by turning them into closures
ext {
    commonMethod1 = this.&commonMethod1
    otherNameForMethod2 = this.&commonMethod2
}

그리고 이것은 다른 펼쳐지는 방법을 사용하는 방법입니다.

// Use double-quotes, otherwise $ won't work
apply from: "$rootDir/helpers/common-methods.gradle"

// You can also use URLs
//apply from: "https://bitbucket.org/mb/build_scripts/raw/master/common-methods.gradle"

task myBuildTask {
    def myVar = commonMethod1("parameter1")
    otherNameForMethod2(myVar)
}

Groovy에서 메서드를 클로저로 변환하는 방법에 대한 자세한 내용다음과 가능 합니다.


Kotlin dsl을 사용하면 다음 과 같이 작동합니다.

build.gradle.kts :

apply {
  from("external.gradle.kts")
}

val foo = extra["foo"] as () -> Unit
foo()

external.gradle.kts :

extra["foo"] = fun() {
  println("Hello world!")
}

참고 URL : https://stackoverflow.com/questions/18715137/extract-common-methods-from-gradle-build-script

반응형