我已經被委託爲現有項目編寫一些自動化集成測試的基類,並且遇到了項目依賴性問題。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似乎很好(在本項目的其他地方使用)。將配置文件移動到子文件夾是我考慮過的一個選項,如果我找不到其他解決方案,我會考慮是否會有一些選項不參與這個過程。
不應將項目根目錄添加爲資源文件夾。我個人堅持標準src/main/resources – 2014-12-01 20:12:30