web-dev-qa-db-ja.com

Gradleラッパーファイルを生成する方法とタイミング

Gradle Wrapperの仕組みを理解しようとしています。多くのソースリポジトリでは、私は次のような構造を見ています。

projectRoot/
    src/
    build.gradle
    gradle.properties
    settings.gradle
    gradlew
    gradlew.bat
    gradle/
        wrapper/
            gradle-wrapper.jar
            gradle-wrapper.properties

私の質問:

  1. どのように/いつgradlew/gradlew.batを生成するのですか?プロジェクトを最初に作成したときに1回しか生成しないと思いますか。変更をコミット/プッシュするたびに生成しますか?そしてそれらはどのように生成されますか?
  2. 上記と同じ質問ですが、gradle/wrapper/*ファイル(gradle-wrapper.jarおよびgradle-wrapper.properties)についてはどうですか。
  3. プロジェクトのgradleディレクトリ内に他の*.gradleファイルがあることがあります。これらの追加のGradleファイルとは何ですか?カスタムプラグイン?
  4. settings.gradleに入るプロパティとgradle.propertiesの中で何を定義すべきかの違いは何ですか?
197
smeeb
  1. プロジェクトで使用している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オプションも使用できます。オプションはバイナリ、allbinです。 allにはさらにソースコードとドキュメントが含まれています。 IDEを使用すると、allのほうが優れているので、エディターのほうがうまく機能します。欠点は、ビルドが長持ちする可能性があり(CIサーバー上で無意味に、より多くのデータをダウンロードする必要がある)、それにはより多くのスペースが必要になります。

  1. これらはGradle Wrapperファイルです。あなたはそれらを(特定のバージョン用に)一度生成してバージョン管理に追加する必要があります。 Gradle Wrapperのバージョンを変更する必要がある場合は、build.gradle内のバージョンを変更して(1.)を参照し、ファイルを再生成してください。

  2. 詳細な例を挙げてください。そのようなファイルは複数の目的を持っているかもしれません:マルチモジュールプロジェクト、責任分離、わずかに修正されたスクリプトなど.

  3. settings.gradleはプロジェクトの構造(モジュール、名前など)に責任がありますが、gradle.propertiesはプロジェクトおよびGradle外部の詳細(バージョン、コマンドライン引数-XX、プロパティなど)に使用されます。

223
Opal

Gradleラッパーの生成

プロジェクトビルドグラドル

// 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

あなたは最新のバージョンを設定しなければなりません、そしてあなたは ツールページをチェックし そしてそれに応じてバージョンを編集することができます。

Android Studioが生成するものを見る

Gradleと最新のAndroid Studioの追加により、プロジェクトのレイアウトが劇的に変わりました。古いプロジェクトがある場合は、最新のAndroid Studioを使用してクリーンなプロジェクトを作成し、Googleが標準プロジェクトと見なすものを確認することを強くお勧めします。

Android Studioには古いプロジェクトをインポートするための機能もあり、これも役に立ちます。

25

Gradle 2.4では、gradle wrapper --gradle-version X.Xファイルにタスクを追加することなく、build.gradleを使用して特定のバージョンのGradleラッパーを設定できます。次回ラッパーを使用するときには、一致する適切なGradleディストリビューションがダウンロードされます。

15
Craig Trader

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")
}
8
Geng Jiawen

これは、ソースコードを含むライブラリの配布バージョンを取得するようにラッパーをアップグレードするようにGradleに指示するために使用するコマンドです。

./gradlew wrapper --gradle-version <version> --distribution-type all

配布タイプを "all"で指定すると、Gradleは開発環境で使用するためにソースファイルを確実にダウンロードします。

長所

  • IDEはソースコードにすぐにアクセスできます。たとえば、Intellij IDEAでは、ソースディストリビューションを含めるようにビルドスクリプトを更新するように求められません(このコマンドで既に実行されているため)

短所

  • ソースコードをダウンロードしているので、より長い/より大きいビルドプロセス。これは、ソースコードが不要なビルドまたはCIサーバーの時間/スペースの浪費です。

Gradleにビルドサーバーにソースをダウンロードしないように指示するコマンドラインオプションがある場合は、コメントするか、別の回答を入力してください。

2
Shorn
  1. あなたはそれらを一度生成するでしょうが、もしあなたが新機能やプラグインからの何かが必要ならばそれらを更新してください。

    更新する最も簡単な方法:Gradle 2.2では、完全版またはバイナリ版 のGradleディストリビューション をダウンロードして解凍するだけです。

    $ <pathToExpandedZip>/bin/gradle wrapper
    

    タスクを定義する必要はありませんが、おそらく何らかのbuild.gradleファイルが必要です。

    これは、gradlewおよびgradlew.batラッパー、ならびにgradle/wrapper/gradle-wrapper.propertiesおよびgradle-wrapper.jarを更新または作成して、現在のバージョンのgradleをラップして提供します。

  2. これらはすべてラッパーの一部です。

  3. いくつかのbuild.gradleファイルは、他のファイルまたはサブプロジェクトまたはモジュールであるサブディレクトリ内のファイルを参照します。少し複雑になりますが、プロジェクトが1つある場合は、基本的に1つのファイルが必要です。

  4. settings.gradleはプロジェクト、モジュール、その他の種類の名前や設定を扱います。gradle.propertiesはあなたのgradleファイルのために再利用可能な変数を設定します。

1
dlamblin