2013-04-25 106 views
3

找物業我做了自定義任務,名稱MySqlTask​​.groovygradle這個,不能在buildSrc

import org.gradle.api.DefaultTask 
import org.gradle.api.tasks.TaskAction 

public class MySqlTask extends DefaultTask { 
    def hostname = 'localhost' 
    def sql 

    @TaskAction 
    def runQuery() { 
    //to do something... 
    } 
} 

而且,我把這個文件rootProject/buildSrc/src目錄/主/常規。

我的構建文件是customtasksourcetree.gradle。

任務的CreateDatabase(類型:MySqlTask​​){SQL = 'CREATE DATABASE IF NOT EXISTS例如'}

當運行用的gradle然後customtasksrc.gradle引發錯誤這樣。

FAILURE: Build failed with an exception. 

* Where: 
Build file '/Users/need4spd/Programming/Java/workspace/gradleTest/customtasksourcetree.gradle' line: 1 

* What went wrong: 
A problem occurred evaluating root project 'gradleTest'. 
> Could not find property 'MySqlTask' on root project 'gradleTest'. 

我讀過了,我的buildSrc中的自定義任務文件將在編譯時自動編譯並添加到classpath中。

我可以在buildSrc/build/classes中看到已編譯的MySqlTask​​.class。

有什麼問題?謝謝。

回答

4

我認爲這個問題是由於

+0

我需要導入我自定義任務在我的構建腳本的事實,你有沒有在你的構建腳本導入MySqlTask​​?在http://www.gradleware.com/registered/books/building-and-testing/tasks.html中沒有提及它。我會試着找到它。謝謝!。 – 2013-04-26 00:03:31

+0

如果您的任務類具有'package'語句,則您(僅)必須使用導入。顯然你的不。嘗試如果'gradle --stop'後面有一個乾淨的版本有幫助。也嘗試刪除'.gradle'目錄。 – 2013-04-26 18:48:25

+0

Peter Niederwieser它的工作原理!謝謝! – 2013-04-30 07:22:25