2014-08-31 2 views
1

구성 bean이 있습니다.스프링 부트에서 자원 주입이 gradle로 작동하지 않습니다.

build/classes/main (no icc file) 
build/resources/main (icc file, application.properties) 
:

@Component 
public class Config { 

    @Value("classpath:${app.file.name.srgbicc}") 
    public Resource icc; 

    @PostConstruct 
    void init(){ 
     try { 
     tempdir = Files.createTempDir(); 
     newIcc = copyIccFileToTemp();   
     }catch (IOException e){ 
     throw new RuntimeException(e); 
     } 
    } 

    private File copyIccFileToTemp() throws IOException { 
     File tempIcc = new File(tempdir, icc.getFilename()); 
     FileUtils.copyFile(icc.getFile(),tempIcc); 
     return tempIcc; 
    }  

은} icc.getFile()

는 FileNotFoundException이에게 내 클래스 경로에 보니 다음과 같은 상황을 발견

application.properties

app.file.name.srgbicc = sRGB.icc 

있다

응용 프로그램을 시작하는 동안 클래스 패스를 인쇄 할 때 나는 ...myApp/build/classes/main만을 발견했습니다. 아니요 ../build/resources/main 또는 ../src/main/resources 항목이 있습니다.

그래서 클래스 패스에없는 리소스가 왜 궁금합니다. 에 따라 http://docs.spring.io/spring-boot/docs/1.1.5.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-running-applications 이어야합니다.

물론 icc 파일을 build/classes/main에 넣으면 예상대로 작동하지만 거기에 있지 않아야합니다. 권리?

intellij에서 gradle run 또는 gradle bootRun으로 애플리케이션을 실행하려했는데 static main을 사용합니다. 좋은 점은 응용 프로그램을 시작하는 방식과 관계없이 응용 프로그램이 일관되게 실패한다는 것입니다.

참고로 내 프로젝트 레이아웃

myApp 
    src 
     main 
      java 
       pkg 
        Config.java 
      resources 
       sRGB.icc 
       application.properties 

: 인 IntelliJ 여기에 13 봄 부팅 1.1.5 Fgradle 2.0

업데이트 는 내 코드의 예를 벗겨 https://gist.github.com/Vad1mo/bb5d23ca251341236fbd

config.init에서 @PostConstruct를 제거하고 gradle 빌드로 애플리케이션을 실행합니다. 모든 테스트가 완료됩니다. intellij에서 테스트가 실패했을 때. 이건 이상한 다른 행동을 알고있다

+0

정확히 어떻게 응용 프로그램 (Gradle 또는 IntelliJ)을 실행하고 정확히 리소스 파일을 넣었습니까? 처리 된 리소스 파일이'build/classes/resources/main'가 아닌'build/resources/main'에 들어가야하므로 뭔가 잘못 설정된 것 같습니다. –

+0

@PeterNiederwieser 질문을 만들 때 복사 및 붙여 넣기 오류가 발생했습니다. 내 경로는'build/resources/main'입니다. – Vadimo

+0

앱 (Gradle 또는 IntelliJ)을 정확히 실행하는 방법과 정확히 리소스 파일을 넣은 경로는 무엇입니까? –

답변

0

나는 지금 문제를 해결했다.

단순한 clean build을 수행하고 intellij에서 프로젝트를 다시 작성하는 데 도움이 된 것은 무엇입니까? 나는 이클립스와 메이븐 (maven)을 많이 사용하여 자동으로 일어날 것으로 예상했다.

관련 문제