その名前のタスクは既に存在するため、タスク「ラッパー」を追加できません


112

「react-native init AwesomeProject」をインストールすると、次のコマンドを実行するとこのエラーが発生しますreact-native run-android

Could not determine java version from '11.0.1'.

簡単なグーグルは、私がdistributionUrlGradleラッパーで更新する必要があることを示唆しています。これを行った後、私は新しいエラーに直面しました:

Cannot add task 'wrapper' as a task with that name already exists.

問題がファイルにあることを示唆しています:

/AwesomeProject/android/build.gradle' line: 36

こんな感じ

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

私はこれが何をしているのかを理解しようと、何度も行ってきました。箱から出してすぐに機能しないものがあるのは奇妙に思えます。誰かが同様の問題に直面していますか?


4
更新はありますか、それとも正解ですか?そうでない場合、どのようにそれを解決しましたか?それ以外の場合は回答の右クリックアイコン。>> :-)
ganeshdeshmukh

回答:


160

更新することもできます

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'    
    distributionUrl = distributionUrl.replace("bin", "all")
}

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

なので

4.8で廃止予定の組み込みタスクをオーバーライドすると、エラーが発生するようになりました。

組み込みタスクを置き換えようとすると、次のようなエラーが発生します。

その名前のタスクが既に存在するため、タスク「ラッパー」を追加できません。

タスクとプロパティの最後の段落を参照してくださいhttps : //docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

およびWrapperタスクのカスタマイズhttps : //docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper


9
この答えはOPの実際の質問には答えませんが、私のようなGoogle社員にとって非常に役立つので、賛成しました。
フランクリン・ユー

それはOPの問題を解決します。彼は古いGradleバージョンを使用していて、古いソリューションを使用して更新に関連付けられていました。この答えは正しいソリューションを提供します。(あなたが取る場合はもちろん、@FranklinYuは、「誰もが同様の問題に直面しているのですか?」OPの質問は、単純な「はい」で十分でしょうと。)
マイケル・Piefel

91

ご使用の環境では、どのバージョンのGradleを使用していますか?

Gradleバージョン5.xを使用する場合は、「タスクラッパー」を次のように変更する必要があります。

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

その後、このエラーが発生しました。何をすべきかわからない。エラー:org.gradle.api.Projectタイプのルートプロジェクト 'myproject'の引数[{type = class org.gradle.api.tasks.wrapper.Wrapper}、build_81gq​​92nveejavsi3t9efznmk8 $ _run_closure2 @ 55f5bac8]のメソッドwrapper()が見つかりませんでした。
buddhiv

21

コメントで述べられているように-https : //stackoverflow.com/a/46867575/4982729

  1. ファイルを開いて編集しますapp-folder/android/gradle/wrapper/gradle-wrapper.properties。行を更新する

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
  2. ファイルでAwesomeProject/android/build.gradleコメント化してみてください

    task wrapper(type: Wrapper) {
        gradleVersion = '4.4'
        distributionUrl = distributionUrl.replace("bin", "all")
    }

12

「gradle-wrapper.properties」ファイルにすでにこれらのコードがある場合

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

その後、削除することができます

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

build.gradleから


1

同じ問題があります。私のコードの問題は、build.gradleの別のGradleファイルでの二重宣言でした

build.gradle

apply from: otherFile.gradle
... build. gradle code...
apply from: otherFile.gradle //Again 

0

build.gradleファイルで実行する「タスク」がある可能性が高いので、ラッパーに関連する行(ブラケットなどを含む)を削除してください。次に、IntelliJを使用している場合は、新しいものが自動的に作業ディレクトリに配置されます。


0

ローカル Gradleラッパーではなくグローバル Gradle を使用してタスクを実行していたため、問題が発生しました。

つまり、現在のディレクトリにgradlew実行可能ファイルがありました。

しかし、私はこのコマンドを実行していました:

gradle <task>

私が走っていたはずのとき:

./gradlew <task>

おそらく、グローバルグラドルを実行すると、ローカルラッパーが作成されようとするため、おそらく既に存在しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.