Gradle多專案給出“找不到屬性”sourceSets’在專案“錯誤
我有一個很好的畢業生配置,建立一切都很好.但是,我的多專案構建專案之一源自於其他專案,所以我很樂意將其轉移到另一個git repo並配置子模組來處理它.
首先,我將Project及其資源移至子資料夾/ MovedProject.改變了一些執行緒在gradle配置後,工作正常.但是後來我決定為這個專案編寫一個新的build.gradle,並將其中的所有配置從主檔案中移出.
這就是一切都停止工作的地方.當我嘗試呼叫任何任務時,它總是結束
在專案’:庫/ MovedProject’上找不到屬性’sourceSets’.負責的是:
dependencies { ... if (noEclipseTask) { testCompile project(':Libraries/MovedLibrary').sourceSets.test.output } }
我用於執行測試,其中我使用其他專案的類.如果我刪除該行,則只有在到達使用MovedProject的專案的compileTestJava任務時,構建才會失敗.如果我刪除該行並呼叫gradle:庫/ MovedLibrary:屬性我可以看到:
... sourceCompatibility: 1.7 sourceSets: [source set main, source set test] standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@1e263938 ...
而gradle:圖書館/ MovedLibrary:構建正確.
目前我已經做了如下所有設定:
>目錄:
> / SomeMainProject1
> / SomeMainProject2
> / SomeMainProject3
> /庫
> / MovedProject
> build.gradle
>依賴
> project.gradle
> tasks.gradle
> / Builder
>依賴
> project.gradle
> tasks.gradle
> build.gradle
> settings.gradle
> settings.gradle
include Libraries/MovedProject, SomeMainProject1, SomeMainProject2, SomeMainProject3
> MovedProject的sourceSets在Libraries / MovedProject / project.gradle中定義:
sourceSets { main { java { srcDir 'src' srcDir 'resources' } resources { srcDir 'resources' } } test { java { srcDir 'test/unit' } } }
使用sourceSets.test.output的依賴關係儲存在Builder / dependancies.gradle中,併為需要MovedProject的每個專案設定執行測試:
project(':SomeMainProject1') { dependencies { ... if (noEclipseTask) { testCompile project(':Libraries/net.jsdpu').sourceSets.test.output } } }
什麼是最簡單的方法來擺脫這個錯誤,並使當前目錄結構的gradle構建專案?我想了解為什麼畢業生看不到這個財產.
所討論的這個問題是有問題的,因為它假設專案:Libraries / MovedLibrary在當前專案之前被評估(不執行),可能不是這樣.如果沒有,另一個專案的原始碼集將不會被配置. (甚至沒有sourceSets屬性,因為java-base外掛還沒有被應用)
一般來說,最好不要涉及其他專案的專案模式,特別是如果他們不是當前專案的孩子.在專案A使用專案B的測試程式碼的情況下,推薦的解決方案是使專案B公開測試Jar(通過工件{}塊),然後由專案A消耗.
如果你想保持現狀,你可以使用gradle.projectsEvaluated {}或project.evaluationDependsOn()來解決問題.有關更多資訊,請參閱ofollow,noindex" target="_blank">Gradle Build Language Reference .
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/15347364/gradle-multiproject-gives-could-not-find-property-sourcesets-on-project-erro