Gradle Wrapperの仕組みを理解しようとしています。多くのソースリポジトリでは、私は次のような構造を見ています。
projectRoot/
src/
build.gradle
gradle.properties
settings.gradle
gradlew
gradlew.bat
gradle/
wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
私の質問:
gradlew
/gradlew.bat
を生成するのですか?プロジェクトを最初に作成したときに1回しか生成しないと思いますか。変更をコミット/プッシュするたびに生成しますか?そしてそれらはどのように生成されますか?gradle/wrapper/*
ファイル(gradle-wrapper.jar
およびgradle-wrapper.properties
)についてはどうですか。gradle
ディレクトリ内に他の*.gradle
ファイルがあることがあります。これらの追加のGradleファイルとは何ですか?カスタムプラグイン?settings.gradle
に入るプロパティとgradle.properties
の中で何を定義すべきかの違いは何ですか?プロジェクトで使用しているGradleのバージョンを変更したい場合は、一度生成します。頻繁に生成する必要はありません。 これが のドキュメントです。 wrapper
タスクをbuild.gradle
ファイルに追加し、このタスクを実行してラッパー構造を取得するだけです。
ラッパーを生成するには、Gradleをインストールする必要があります。 gエコシステムのアーティファクトを管理するための優れたツールは、 SDKMAN! です。グラドルラッパーを生成するには、次のコードをbuild.gradle
ファイルに追加します。
task wrapper(type: Wrapper) {
gradleVersion = '2.0' //version required
}
実行します。
gradle wrapper
仕事。生成されたファイルをSCM(例えばgit)に追加すれば、Gradle Wrapperを使用するとき、今からすべての開発者が同じバージョンのGradleを持つことになります。
Gradle2.4以上では、専用のタスクを追加することなくラッパーを設定できます。
gradle wrapper --gradle-version 2.3
または
gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.Zip
すべての詳細はここで見つけることができます ここで
Gradleから3.1
--distribution-type
オプションも使用できます。オプションはバイナリ、all、binです。 allにはさらにソースコードとドキュメントが含まれています。 IDEを使用すると、allのほうが優れているので、エディターのほうがうまく機能します。欠点は、ビルドが長持ちする可能性があり(CIサーバー上で無意味に、より多くのデータをダウンロードする必要がある)、それにはより多くのスペースが必要になります。
これらはGradle Wrapperファイルです。あなたはそれらを(特定のバージョン用に)一度生成してバージョン管理に追加する必要があります。 Gradle Wrapperのバージョンを変更する必要がある場合は、build.gradle
内のバージョンを変更して(1.)を参照し、ファイルを再生成してください。
詳細な例を挙げてください。そのようなファイルは複数の目的を持っているかもしれません:マルチモジュールプロジェクト、責任分離、わずかに修正されたスクリプトなど.
settings.gradle
はプロジェクトの構造(モジュール、名前など)に責任がありますが、gradle.properties
はプロジェクトおよびGradle外部の詳細(バージョン、コマンドライン引数-XX
、プロパティなど)に使用されます。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// Running 'gradle wrapper' will generate gradlew - Getting gradle wrapper working and using it will save you a lot of pain.
task wrapper(type: Wrapper) {
gradleVersion = '2.2'
}
// Look Google doesn't use Maven Central, they use jcenter now.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
その後、コマンドラインで実行
gradle wrapper
あなたのシステムにgradleが足りない場合はそれをインストールしないと上記は動作しません。 MacではHomebrew経由でインストールするのが最善です。
brew install gradle
ラッパータスクを正常に実行してgradlew
を生成したら、システムグラドルを使用しないでください。それはあなたに多くの頭痛を救うでしょう。
./gradlew assemble
com.Android.tools.build:gradle:1.0.1
あなたは最新のバージョンを設定しなければなりません、そしてあなたは ツールページをチェックし そしてそれに応じてバージョンを編集することができます。
Gradleと最新のAndroid Studioの追加により、プロジェクトのレイアウトが劇的に変わりました。古いプロジェクトがある場合は、最新のAndroid Studioを使用してクリーンなプロジェクトを作成し、Googleが標準プロジェクトと見なすものを確認することを強くお勧めします。
Android Studioには古いプロジェクトをインポートするための機能もあり、これも役に立ちます。
Gradle 2.4では、gradle wrapper --gradle-version X.X
ファイルにタスクを追加することなく、build.gradle
を使用して特定のバージョンのGradleラッパーを設定できます。次回ラッパーを使用するときには、一致する適切なGradleディストリビューションがダウンロードされます。
Sourceとdocs付きのgradleをダウンロードしたい場合、gradle-wrapper.properitesで設定されたデフォルトの配布URLはあなたの必要を満たしません。https://services.gradle.org/distributions /gradle-2.10-bin.Zip、ないhttps://services.gradle.org/distributions/gradle-2.10-all.Zip。このフルURLは、Android StudioなどIDEによって推奨されています。フルグレードをダウンロードする場合は、次のようにラッパータスクを設定できます。
task wrapper(type: Wrapper) {
gradleVersion = '2.13'
distributionUrl = distributionUrl.replace("bin", "all")
}
これは、ソースコードを含むライブラリの配布バージョンを取得するようにラッパーをアップグレードするようにGradleに指示するために使用するコマンドです。
./gradlew wrapper --gradle-version <version> --distribution-type all
配布タイプを "all"で指定すると、Gradleは開発環境で使用するためにソースファイルを確実にダウンロードします。
長所:
短所:
Gradleにビルドサーバーにソースをダウンロードしないように指示するコマンドラインオプションがある場合は、コメントするか、別の回答を入力してください。
あなたはそれらを一度生成するでしょうが、もしあなたが新機能やプラグインからの何かが必要ならばそれらを更新してください。
更新する最も簡単な方法:Gradle 2.2では、完全版またはバイナリ版 のGradleディストリビューション をダウンロードして解凍するだけです。
$ <pathToExpandedZip>/bin/gradle wrapper
タスクを定義する必要はありませんが、おそらく何らかのbuild.gradle
ファイルが必要です。
これは、gradlew
およびgradlew.bat
ラッパー、ならびにgradle/wrapper/gradle-wrapper.properties
およびgradle-wrapper.jar
を更新または作成して、現在のバージョンのgradleをラップして提供します。
これらはすべてラッパーの一部です。
いくつかのbuild.gradle
ファイルは、他のファイルまたはサブプロジェクトまたはモジュールであるサブディレクトリ内のファイルを参照します。少し複雑になりますが、プロジェクトが1つある場合は、基本的に1つのファイルが必要です。
settings.gradle
はプロジェクト、モジュール、その他の種類の名前や設定を扱います。gradle.properties
はあなたのgradleファイルのために再利用可能な変数を設定します。