我挺好的gradle這個配置,即內置一切就好了。但是我的多項目構建項目中的其中一個很大程度上來自其他項目,我很樂意將它移到另一個git repo並配置子模塊來處理它。搖籃多重賦予「項目找不到屬性「sourceSets」錯誤
首先,我搬到項目及其資源到子文件夾Libraries/MovedProject
。改變gradle配置中的一些行後,它工作正常。但是後來我決定爲這個項目編寫一個新的build.gradle,並將所有的配置從主要的配置中移出。
而這正是一切停止工作。當我嘗試調用任何任務時,它總是以Could not find property 'sourceSets' on project ':Libraries/MovedProject'
結束 。行負責,它是:
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
}
}
,我使用的運行中,我使用類其他項目的測試。如果我刪除該行,那麼構建只有在達到使用MovedProject的項目的compileTestJava任務時纔會失敗。如果我刪除了這一行,並呼籲gradle :Libraries/MovedLibrary:properties
我可以看到:
...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: [email protected]
...
而gradle :Libraries/MovedLibrary:build
建立正確。
目前我擁有了一切設置如下:
目錄:
- /SomeMainProject1
- /SomeMainProject2
- /SomeMainProject3
- /庫
- /MovedProject
- 的build.gradle
- dependencies.gradle
- project.gradle
- tasks.gradle
- /MovedProject
- /生成器
- dependencies.gradle
- 項目。格林
- tasks.gradle
- 的build.gradle
- settings.gradle
設置。gradle這個
include Libraries/MovedProject, SomeMainProject1, SomeMainProject2, SomeMainProject3
sourceSets爲MovedProject在
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構建項目?我想明白爲什麼Gradle不能看到這個屬性。
非常感謝!現在一切都在建立。使用'project.evaluationDependsOn()'屬性。我想這個解決方案很骯髒,但我必須堅持一段時間。 – 2013-03-12 18:25:55