2016-04-03 10 views
2

git.gradleの内容がbuild.gradleにコピーされていない限り、Gradle(OSXのv2.12)はGrgitの定義を次の例で見つけることができません。 git.gradleを失うことなくこのエラーを解決するにはどうすればよいですか?インポートしたG​​radleスクリプトでインポートをインポートできないのはなぜですか?

build.gradle

buildscript { 
    repositories { 
    jcenter() 
    } 
    dependencies { 
    classpath 'org.ajoberstar:gradle-git:1.4.2' 
    } 
} 

apply from: 'git.gradle' 

git.gradle

import org.ajoberstar.grgit.* 

task clone << { 
    Grgit.clone(dir: file('build/repo'), uri: '[email protected]:user/repo.git') 
} 

これが出力される。

$ gradle clone 
... 
Execution failed for task ':clone'. 
> Could not find property 'Grgit' on task ':clone'. 
+1

あなた可能性にGrgitを保存してみてくださいあなたのbuild.gradleにext変数を追加し、git.gradleでそれを使用しますか? 'ext.gg = Grgit'、次にgit.gradle、' gg.clone(... ' – RaGe

+0

@RaGe、ありがとう!私は実際にそれを理解して、回答を入力しています。 –

答えて

2

回避方法:GrgitExtraPropertiesExtensionproject.extと追加して、インポートしたG​​radleスクリプトに公開します。 (これを行うためのクリーンな方法がありますかどうかわからない...)

build.gradle

buildscript { 
    repositories { 
    jcenter() 
    } 
    dependencies { 
    classpath 'org.ajoberstar:gradle-git:1.4.2' 
    } 
} 

// expose Grgit to `git.gradle` 
project.ext.Grgit = org.ajoberstar.grgit.Grgit 

apply from: 'git.gradle' 

git.gradle別に

// no import needed here 

task clone << { 
    Grgit.clone(dir: file('build/repo'), uri: '[email protected]:user/repo.git') 
} 

gradle-gitを適用すると、プラグインは自動的に opens the Git directory of the project's root, and assigns the result to project.ext.grgit。あなたは、現在のプロジェクトのGitのレポで作業するために必要な場合は、そこbuild.gradleからGrgitを公開する必要もないだろう、とgit.gradleは、次のようになります。

たぶん
apply plugin: 'org.ajoberstar.grgit' 

task commitReadme << { 
    grgit.add(patterns: ['README.md']) 
    grgit.commit(message: "Update README for ${rootProject.version}") 
} 
関連する問題