web-dev-qa-db-ja.com

gradle wrapperおよびgradlew.batファイルとは何ですか?

最近、Gradleのビルドシステムとしてのパワーと、Android開発者としてのグラドルのパワーを知りました。

ある記事は次のように述べています。

"Gradleラッパーコマンドラインツールを使用して、Androidプロジェクトで利用可能なすべてのビルドタスクを実行できます。Windows(gradlew.bat)のバッチファイルおよびシェルとして利用可能です。 LinuxおよびMac用のスクリプト(gradlew.sh)。Android Studio。 "で作成した各プロジェクトのルートからアクセスできます。

ラッパーを使用してタスクを実行するには、次のコマンドのいずれかを使用します。

Windowsの場合:gradlew task-name

今、私は次のように行くいくつかの疑問を持っています:-

  1. Gradle Wrapperとgradlew.batとは何ですか?
  2. Android studioがインストールされていて、アプリがgradleを使用してビルドされている場合(gradleはシステムに既にインストールされています)、その場合、ビルド目的でgradleをインストールする必要がありますか?コマンドラインからgradleのようなコマンドを書くとき、コマンドラインでgradlewするとき、gradlewは内部コマンドまたは外部コマンドとして認識されません(他のコマンドと同じエラー)というエラーが表示されます。間違ったパスで使用すると、どのパスでgradle関連のコマンドを使用する必要がありますか?
  3. ダウンロードしてインストールする必要がある場合、どのように、どこでファイルを見つけることができますか?および他のプロセス?

これにはWindowsマシンを使用しています。

17
Abhishek Kumar

Gradle Wrapperは、Gradleビルドシステムのオプション部分です。バージョン管理システムにチェックインする4つのファイルで構成されます。 * nix起動スクリプト<your root project>/gradlew<your root project>/gradlew.bat Windows起動スクリプト、ラッパーのクラスファイルを含み、起動スクリプトによって起動される<your root project>/gradle/wrapper/gradle-wrapper.jarおよび一部を含む<your root project>/gradle/wrapper/gradle-wrapper.propertiesラッパーの構成。たとえば、プロジェクトのビルドに使用するGradleバージョン。

私の意見では、Gradleプロジェクトは、ごく小さなプロジェクトでも、Gradleラッパーを使用する必要があります。

Gradleラッパーは、Gradleラッパーを使用してプロジェクトをビルドする限り、誰がビルドを実行し、Gradleがインストールされているかどうかに関係なく、ビルドが常に同じGradleバージョンで実行されるようにします。これは、そのGradleバージョン用にビルドを設計し、誰かが別のバージョンのGradleを使用しているためにビルドが失敗しないことを確認できることを意味します。

また、プロジェクトのビルドを希望する人は、Javaをインストールするだけです。Gradleバージョンをインストールする必要はありません。実際には、インストール済みのGradleバージョンは無視されます。Gradleラッパー何らかのプロジェクトのGradleラッパーが既にそこに配置しているため、~/.gradle/にビルドに必要なバージョンが既に存在するかどうかをチェックします。既に存在する場合は使用され、そうでない場合は自動的にダウンロードされます。

コマンドラインでgradlewと入力してもコマンドが見つからない場合、ルートプロジェクトのパスをPATH環境変数に入れていないことを意味します(どちらもお勧めしません)。ルートプロジェクトディレクトリにあります。 Gradleビルドを実行するには、プロジェクト内のどこかにいて、GradleまたはGradleラッパーを呼び出す必要があります。ただし、パス上にない実行可能ファイルと同様に、当然そのパスを指定する必要があります。したがって、ルートプロジェクトディレクトリにいる場合は、単にgradlewを実行できます。 <root project dir>/foo/bar/にいる場合は、../../gradlewを呼び出す必要があります。

Gradle Wrapperファイルは、暗黙的に使用可能なGradleタスクwrapperによって生成され、問題のプロジェクトのVCSにチェックインされます。これらの4つのファイルがプロジェクトに存在しない場合、Gradleラッパーを使用しないため、プロジェクトに改善要求を投稿して追加する必要があります。

一部のプロジェクトでGradleラッパーを使用せず、Gradleでビルドする場合、Gradleをインストールしてgradleの代わりにgradlewを使用するか、他のプロジェクトのGradleラッパーを呼び出すこともできます。ディスク上で利用可能です。その後、ラッパーまたはGradleインストールが使用しているGradleバージョンでビルドが実行されるため、期待どおりに動作しない可能性があります。そのため、Gradleを使用する場合、実際に各プロジェクトはラッパーを使用する必要があります。

23
Vampire
  1. gradlew.bat IS Gradleラッパー(この場合はWindowsの場合)。 Gradle Wrapperは、Gradleがインストールされていること(または必要に応じてインストールされていること)を確認して、プロジェクトをいつでもビルドできる小さなユーティリティです。 Gradle自体により、プロジェクトの依存関係とビルド構成を管理できます。

  2. Android St​​udioをインストールしている場合は、Gradleがインストールされており、準備完了です。 (技術的には、各プロジェクトにはGradleのインストール/使用を処理する独自のラッパーがあります)

  3. 上で述べたように、あなたは行ってもいいです。

最後に、Gradleはプロジェクトのビルドに使用するコマンドラインツールであり、Android St​​udioがビルドに使用するものであるため、直接使用する必要はありませんが、直接使用する必要はありません。プロジェクト。

1
RobertoCuba

コメントの後に編集

Gradleはビルドシステムです。

このgradle-wrapperは、Androidプロジェクト。Gradle-build-systemの一部であり、gradleがインストールされているかどうかの主要なチェックを行います。

gradlew.bat-そのa バッチファイル Windowsで使用されます。メモ帳で開いて、手順を表示することもできます。バッチファイルは、実行するファイルに記述された「コマンド」のようなものです。 (Windowsの場合)これを使用して、ビルドコマンドを実行します。また、gradleがインストールされているかどうかも確認します。そうでない場合は、ダウンロードしてインストールします。

:ビルドするAndroid Windows上のアプリ:

  • コマンドプロンプトを開く
  • プロジェクトのルートディレクトリに移動します
  • 実行gradlew.bat assembleDebug

ラッパーを起動し、そこにGradleがインストールされているかどうかを確認し、すべての「gradle specific」コマンドを実行してプロジェクトをビルドします。

Gradleをインストールする必要がありますか?

実は違う。このgradlewスクリプトの仕事は、それを確認することです。そこにまだない場合は、自動的にダウンロードして、それ以降のすべてのビルドに使用します。

1
ZeekHuge