我想將共享gradle文件應用於我的項目settings.gradle
。共享文件位於jar
中,必須在配置階段下載並提取該文件。這是因爲應用了必須在配置階段應用的插件。我發現這個相關的問題:How to share a common build.gradle via a repository?我的首選方式描述在這個答案:https://stackoverflow.com/a/39228611/987860在配置階段在settings.gradle中使用ant
但是,這似乎只在build.gradle
工作。我試圖將buildscript
區塊移動到我的settings.gradle
。
settings.gradle
buildscript {
ext {
dependencyVersion = '0.1.2'
}
repositories {
maven {
credentials {
username 'user'
password 'password'
}
url 'https://my-private-maven-repo.com'
}
}
dependencies {
classpath "my.group:myartifact:$dependencyVersion"
}
dependencies {
def gradleScripts = new File(rootDir, '/build/gradle')
delete gradleScripts
def jars = configurations.classpath.files as List<File>
ant.unjar(src: jars.find { it.name.matches '.*myartifact.*' }, dest: gradleScripts) {
patternset {
include(name:'*.gradle')
}
}
}
}
apply from: new File(rootDir, '/build/gradle/myscript.gradle')
但是這會導致以下異常:
FAILURE: Build failed with an exception.
* Where:
Settings file 'settings.gradle' line: 24
* What went wrong:
A problem occurred evaluating settings 'journal'.
> Could not get unknown property 'ant' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 0.019 secs
Could not get unknown property 'ant' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
有什麼辦法我settings.gradle
之前利用ant
的int confiuration階段評估?我需要在將要下載的文件被應用之前下載和附加依賴項。
謝謝,我沒有注意到構建時間的顯着增加。所以下載和提取一個jar並不是一個大問題,我不介意它是否在每個構建中都完成。我的腳本所做的只是從官方gradle插件回購中應用插件,但我不想將內容複製/粘貼到我的所有項目中。除非沒有辦法取消下載的文件,否則我會保留原樣。從公開可用的網址應用配置可能是最後一個,但是可行的選項。 – Ben