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
'ProgramingTip' 카테고리의 다른 글
PostgreSQL에서 상속 된 테이블을 언제 사용합니까? (0) | 2020.10.21 |
---|---|
객체 계층을 생성하는 다중 매퍼 (0) | 2020.10.21 |
Emacs 또는 Vim 대 Eclipse가 제공하는 효율성은 무엇입니까? (0) | 2020.10.20 |
명명 된 튜플에 독을 추가 할 예정입니까? (0) | 2020.10.20 |
std :: map에서 char *를 키로 사용 (0) | 2020.10.20 |