2013-12-22 4 views
20

I 다음 build.gradle 파일이 :gradle을 사용하여 sourceSet에 자원을 어떻게 추가합니까? 현재

apply plugin: 'java' 

repositories { 
    mavenCentral() 
} 

sourceSets { 
    main { 
     java { 
      srcDir 'src/model' 
     } 
     resources { 
      srcDir 'images/model' 
     } 
    } 

    test { 
     java { 
      srcDir 'tests/model' 
     } 
     resources { 
      srcDir 'images/model' // <=== NOT WORKING 
     } 
    } 
} 

dependencies { 
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar') 
    runtime fileTree(dir: 'libs', include: '*.jar') 

    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

여기 경우 내 저장소 : "테스트/모델"폴더에있는 테스트가 필요하기 때문에 실패 내 49 개 테스트 중 https://github.com/quinnliu/WalnutiQ

4 "images/model"폴더에있는 파일. 리소스를 올바르게 추가하려면 어떻게합니까? 감사!

답변

31

build.gradle을 자세히 살펴본 결과 약간의 경로가있는 것으로 보입니다.

당신은 src/model로 소스를 지정, 아직 프로젝트 구조 및 Java 소스는 ​​model 소스 선언해야 의미 패키지 이름이라고 제안 : 시험

main { 
    java { 
     srcDir 'src' 
    } 
} 

같은 :

test { 
    java { 
     srcDir 'tests' 
    } 
} 

누락 된 리소스가 있습니다. 귀하의 코드에서 ImageIO.read(getClass().getResource(BMPFileName))
getClass().getResource()이 자원에 대한 상대 경로를 사용하고 있습니다. 동일한 수준의 리소스를 유지하기 위해, 당신은 자원에 대한 선언을 업데이트하고 model을 제거해야합니다 :

test { 
    java { 
     srcDir 'tests' 
    } 
    resources { 
     srcDir 'images' 
    } 
} 

는 또한 작동하기 전에

./gradlew clean 

을 실행해야 할 수도 있습니다. 여기

업데이트 된 build.gradle과 결과입니다 :

enter image description here

이 도움이 :) 희망

13

빌드 스크립트에 사용 된 구문이 정확합니다. 나에게 왜 두 소스 세트에 동일한 리소스 디렉토리를 추가하는지, 왜 하나의 경우에 작동하지 않는지 주장하지 않는 이유는 분명하지 않습니다.

srcDir "foo"은 다른 디렉토리를 추가합니다. 대신 기본 디렉토리를 바꾸려면 대신 srcDirs = [ "foo" ]을 사용하십시오. 그러나 이것으로는 문제를 해결할 수 없습니다.

리소스를로드하는 코드를 보면서 문제를 배제하는 것이 좋습니다.

+0

내 REPO를 복제하고 당신이 볼 수 Gradle을 빌드를 실행하면 내가 복사하고 붙여 넣을 수는 없지만 그것. –

관련 문제