2016-04-03 4 views
2

Gradle (v2.12 auf OSX) kann die Definition von Grgit im folgenden Beispiel nicht finden, außer der Inhalt von git.gradle wurde in build.gradle kopiert. Wie kann ich diesen Fehler beheben, ohne git.gradle zu verlieren?Warum importiert das importierte Gradle-Skript nicht?

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') 
} 

Dies ist die Ausgabe:

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

Vielleicht könnten Sie versuchen Grgit zu einem Spar ext Variable in Ihrem build.gradle und dann das in Ihrem git.gradle verwenden? 'ext.gg = Grgit' und dann in git.gradle,' gg.clone (... ' – RaGe

+0

@RaGe, danke! Ich habe das herausgefunden, und ich bin gerade dabei, eine Antwort zu schreiben. –

Antwort

2

Eine Umgehungslösung gefunden: Fügen Sie Grgit als ExtraPropertiesExtensionproject.ext hinzu, um sie dem importierten Gradle-Skript zugänglich zu machen. (Nicht sicher, ob es ein sauberer Weg, dies zu tun ...)

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') 
} 

Abgesehen: Durch die Anwendung gradle-git, das Plugin automatisch opens the Git directory of the project's root, and assigns the result to project.ext.grgit. Wenn Sie nur mit dem aktuellen Projekt des Git-Repo erforderlich arbeiten, würde es keine Notwendigkeit, zu belichten Grgit von build.gradle und git.gradle könnte wie folgt aussehen:

apply plugin: 'org.ajoberstar.grgit' 

task commitReadme << { 
    grgit.add(patterns: ['README.md']) 
    grgit.commit(message: "Update README for ${rootProject.version}") 
} 
Verwandte Themen