私のプロジェクトに共有グラデルファイルを適用したい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
が評価される前にconfiuration段階int型ant
を利用する方法はありますか?ダウンロードするファイルが適用される前に依存関係をダウンロードして抽出する必要があります。
ありがとうございます、私はビルド時間の大幅な増加に気付きませんでした。だから、ダウンロードしてjarファイルを解凍することは大きな問題ではなく、すべてのビルドで実行されるかどうかは気にしません。私のスクリプトがしているのは、公式のgradleプラグインレポからプラグインを適用するだけですが、私はすべてのプロジェクトにコンテンツをコピー/ペーストしたくありません。ダウンロードしたファイルをunjar'ingする方法がない限り、そのまま維持したいと思います。公開されているURLから設定を適用することは、最後ではあるが実行可能なオプションかもしれない。 – Ben