2016-10-27 13 views
0

このプラグインでクロージャーエラーが発生する理由を理解できません。これが適用されてください:プラグインで奇妙なクロージャーエラーが発生する

class MetadataPlugin implements Plugin<Project> { 
    Project project 
    MetadataExtension extension 

    static final METADATA_REPORT = 'metadataReport' 
    static final METADATA_REPORT_TASK = ':' + METADATA_REPORT 

    @Override 
    void apply(Project project) { 
     this.project = project 

     // Create and install the extension object 
     extension = project.extensions.create('metadata', MetadataExtension) 


     // *** create the tasks *** 
     def ignore = project.tasks.create(METADATA_REPORT, MetadataReportTask) 
     ignore.group = PLUGIN_GROUP 
     ignore.description = 'Gets the detailed information for this project and formats it into a user readable report' 

     // *** validate the build file *** 
     project.afterEvaluate { 

      def String ext_hash = project.extensions.metadata.project_hash 

      def String hash = { 
       if (ext_hash == null) { 
        throw new InvalidUserDataException(
          "You must configure the metadata:project_hash value before running any form of build" 
        ) 
       } 
       return ext_hash 
      } 
      throw new InvalidUserDataException(hash) 
     } 
    } 
} 

がそれにこのbuild.gradle

plugins { 
    id 'metadata' 
} 
metadata { 
    project_hash '123123123' 
} 

を追加し、それがこのエラーを生成します。

19:44:49.934 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception. 
19:44:49.935 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
19:44:49.935 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong: 
19:44:49.935 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] A problem occurred configuring root project 'junit9025097301225311002'. 
19:44:49.935 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > com.[email protected]5bff38f7 
19:44:49.935 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 

エラーが閉鎖エラーを適用することが、なぜそれが私に与えている必要があるとして、123123123ではない理由を私は理解していませんか?拡張子は単純なpojoだけです。あなたが直接値を代入する必要がありますので

答えて

0

project_hashは可変です:あなたは、現在のところ適用されない(project_hash(「XYZ」)のような)の関数としてこれを

metadata { 
    project_hash = '123123123' 
} 

使用しています

+0

[email protected]341f9e4 誤差が大きなものは、私は閉鎖を実行する必要があります理解し、ですが、それが実行されていない理由を私は理解できない – scphantm

+0

を変更しませんでした時間あたり彼はafterEvaluateが実行される時を過ごす – scphantm

関連する問題