2017-07-02 23 views
0

我認爲這會工作,但事情必須改變(或我有某種錯誤的)讓所有gradle這個子項目「測試」任務取決於rootproject「設置」任務

What is the syntax for a gradle subproject task depending on a parent project's task?

我有以下任務在根級(即在子項目關閉之外和所有項目關閉之外)。

task deleteJavaCache { 
    doLast { 
     System.out.println("DELETE java caches here to prevent intermitten build failures from java deleting files") 
    } 
} 

test.dependsOn rootProject.deleteJavaCache 
test{ 
    beforeTest{ descr -> 
    logger.warn("Starting Test ${descr.className} : ${descr.name}") 
    } 
... 

我得到的錯誤是

A problem occurred evaluating root project 'webpieces'. 
> Could not get unknown property 'deleteJavaCache' for root project 
'webpieces' of type org.gradle.api.Project. 

然後我猜到了一些東西,包括這一個

test.dependsOn rootProject.task('deleteJavaCache') 

但給我的錯誤

* What went wrong: 
A problem occurred evaluating root project 'webpieces'. 
> Cannot add task ':deleteJavaCache' as a task with that name already exists. 

版本信息因此是

------------------------------------------------------------ 
Gradle 4.1-milestone-1 
------------------------------------------------------------ 
Build time: 2017-06-20 17:05:46 UTC 
Revision:  3ad5af92d482b963cc6b00fb5ad53b608606d657 

Groovy:  2.4.11 
Ant:   Apache Ant(TM) version 1.9.6 compiled on June 29 2015 
JVM:   1.8.0_111 (Oracle Corporation 25.111-b14) 
OS:   Mac OS X 10.11.6 x86_64 
+0

你可以試試'rootProject.tasks ['deleteJavaCache']'? –

+0

@ lu.koerfer關閉!但它錯誤地出現了「在項目'webpieces'中找不到名爲'deleteJavaCache'的任務。」這很奇怪,因爲我在後文中定義了它,這是我定義其他新目標的方式。 –

+0

哦,從那以後我嘗試了一個我用來釋放的全局任務,名爲uploadArchives2,它說不存在,這肯定不是真的,因爲我的發佈會中斷。 –

回答

1

仔細檢查您的settings.gradle,如果子項目是include


如果我的理解對不對是這樣的:

root (deleteJavaCache) 
    |- subprojects (test.dependsOn deleteJavaCache from the root) 

試試這個:

test.dependsOn (":deleteJavaCache") 

或者如果你想所有子項目test任務之前運行它:

//in root build.gradle 
subprojects { 
    test.dependsOn (":deleteJavaCache") 
} 

因爲我相信你正在嘗試定製子項目test任務,使其依賴於根項目的任務是什麼?

,因爲它是一個有點混亂,你說:

我在根級別

以下任務,這意味着整個代碼塊是根項目,既deleteJavaCachetest任務。如果是的話,請嘗試下面的解決方案,如果不是的話,請澄清問題。

test.dependsOn deleteJavaCache 
+0

在評論中有一個鏈接的實際構建文件https://github.com/deanhiller/webpieces/blob/master/build.gradle –

+0

嗯,是的,這似乎是工作。即。 test.dependsOn(「:deleteJavaCache」),因此它取決於根項目的單個deleteJavaCache目標。 –

相關問題