2014-12-01 2 views
0

기존 프로젝트의 자동화 된 통합 테스트를위한 기본 클래스를 작성하고 프로젝트 종속성이있는 장애물을 실행했습니다.클래스 경로에 추가되지 않은 Gradle 프로젝트 리소스

제 (추상화) 프로젝트 레이아웃이있다 :

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가 부족하다는 것을 확인했습니다. ConfigurationProject는 IntegrationTestProjects가 자원으로 프로젝트 루트를 추가 할 때 난 단지이 문제를 관찰

dependencies { 
    compile project(':ConfigurationProject') 
} 

을 gradle.build 사용 IntegrationTestProject에 포함되어 ADDN

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); 
    } 
} 

g 하위 폴더를 sourceSets에 프로젝트의 괜찮아 보인다 (그리고이 프로젝트에서 다른 곳에서 사용됩니다). 구성 파일을 하위 폴더로 이동하는 것은 내가 고려한 옵션이며 다른 해결책을 찾지 못할 경우 제정 할 예정이지만이 작업 과정을 포함하지 않는 옵션이 있는지 알고 싶습니다.

+0

프로젝트 루트를 리소스 폴더로 추가해서는 안됩니다. 개인적으로 나는 표준 src/main/resources에 충실한다 –

답변

0

이 답변은 본질적으로 "프로젝트 루트를 리소스 폴더로 만들지 말고, Gradle이 그것을 싫어합니다. 그렇지 않은 경우에도 어쨌든 나쁜 형식입니다."제가 구성 파일을 더 현명하게 배치하여이 문제를 해결했습니다. 리소스 경로.

+0

이것은 어떻게 든 https://issues.gradle.org/browse/GRADLE-3096와 관련이 있습니까? –

관련 문제