2014-12-01 108 views
0

我已經被委託爲現有項目編寫一些自動化集成測試的基類,並且遇到了項目依賴性問題。Gradle項目資源未添加到Classpath中

的(抽象)的項目的佈局是這樣的:

project/
    MainProject 
    Plugins/
     ... 
    ConfigurationProject 
    IntegrationTestProject 

IntegrationTestProject具有在ConfigurationProject依賴性,後者具有下列布置:

ConfigurationProject/ 
    PluginConfigs/ 
     <plugin configuration files> 
    <main configuration files> 

值得注意的是,在主配置文件駐留在項目的根源。在試圖將它們添加到我的類路徑中,我的主要的build.gradle有以下幾點:

project('ConfigurationProject') { 
    description = 'Configuration' 
    sourceSets.main.resources.srcDir projectDir 
} 

這似乎看行不行,因爲日食顯示根中的所有文件作爲該項目的一部分資源,以及組裝包一切如預期。

但是,當我實際上運行集成測試時,ConfigurationProject資源似乎不在類路徑中,因爲它無法獲取配置信息,並且由此片段輸出中缺少ConfigurationProject進一步確認:

public void classpathScanner() { 
    ClassLoader c=getClass().getClassLoader(); 
    System.out.println("c="+c); 
    URLClassLoader u=(URLClassLoader)c; 
    URL[] urls=u.getURLs(); 
    for (URL i : urls) { 
     System.out.println("url: "+i); 
    } 
} 

的ConfigurationProject使用IntegrationTestProjects gradle.build

dependencies { 
    compile project(':ConfigurationProject') 
} 

添加項目根作爲資源時我只觀察到了這種問題包括在IntegrationTestProject,ADDN一個項目的子文件夾到sourceSets似乎很好(在本項目的其他地方使用)。將配置文件移動到子文件夾是我考慮過的一個選項,如果我找不到其他解決方案,我會考慮是否會有一些選項不參與這個過程。

+0

不應將項目根目錄添加爲資源文件夾。我個人堅持標準src/main/resources – 2014-12-01 20:12:30

回答

0

對此的回答基本上是「不要讓項目根目錄成爲一個資源文件夾,Gradle討厭這個問題,即使它不是,它仍然是一個糟糕的形式」我通過將配置文件放在一個更明智的資源路徑。

+0

這是否與https://issues.gradle.org/browse/GRADLE-3096有關? – 2014-12-23 18:33:56

相關問題