2016-10-09 3 views
4

빠른 시작에 설명 된 표준 파일 구조를 사용하여 작성된 새로운 angular2 프로젝트가 있습니다. API 게이트 웨이를 빌드하고 스프링 부트 호스트 어플리케이션을 사용하려고 시도했지만 생성 된 소스가 생성 된 프로젝트에서/dist 디렉토리를 사용하도록 부트를 구성 할 수 없었습니다. 프로젝트 구조는 다음과 같습니다angular2 스프링 부트 프로젝트 구조

project 
|--dist 
|--node_modules 
|--src 
| |--app 
| |--assets 
| |--main 
| | |--java 
| | |--resources 
| | | |--config 
| | |--webapp 
| | | |--WEB-INF 
나는 여전히 UI에 대한 지속적인 개발을 위해 NPM/웹팩을 사용할 수 있도록 기본/DIST 디렉토리를 사용하고 싶습니다

.

나는과 같이 정적 자원 디렉토리를 구성 시도 :

spring.resources.staticLocations: /dist 

을하지만이 작동하지 않는 것 같습니다.

나는 dist 디렉토리에 직접 가리 키도록 자원 핸들러를 만든 :

@Configuration 
public class WebMvcConfiguration extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(final ResourceHandlerRegistry registry) { 

    String currentPath = new File("./").getAbsolutePath(); 
    currentPath = "file:///" + currentPath; 

    registry.addResourceHandler("/**").addResourceLocations(currentPath + "/dist/"); 
    } 
} 

이 문제의 일부를 해결하지하지만 지금은 내 루트 URL이 ('/')는 더 이상 index.html을 매핑됩니다.

/dist 프로젝트 디렉토리를 찾기 위해 spring-boot를 구성하는 더 쉽고/좋은 방법이 있습니까? 프로젝트 구조가 변경되어야합니까? 나는이 모든 조각들을 깨끗이 정리하고 싶다. 당신이 index.html을 아래와 같이 넣으면 폴더 SRC/메인/자원

를 기준으로

/META-INF/resources/ 

/resources/ 

/static/ 

/public/ 

:

+0

클래스 경로에서 디스크를 직접 누르지 말고 위치를 사용해야합니다. (결국 항아리에는 존재하지 않을 것이다!) 나는 보통 JS 파이프 라인을'target/classes'에 출력하도록 설정한다. – chrylis

답변

1

나는 @chrylis 조언을 사용하고 webpack 빌드의 대상 디렉토리가/dist (Gradle을 사용하여) 빌드되도록 지정했습니다.

결과적으로 생성 된 소스를 /resources/**에 넣는 것을 피할 수 있습니다. 결국 이것이 .war에 내장되어 엔터프라이즈 응용 프로그램 서버에 배포 될 것이기 때문에 - 이것을 지원하기 위해 내 빌드에 많은 로직을 원하지 않았습니다. 또한 빌드 디렉토리는 생성 된 .js 소스에 대해보다 논리적 인 것으로 보입니다.

내 프로젝트 구조는 이제 다음과 같습니다 : 나는 지금 수있어

spring.resources.static-locations: "file:./build/dist/" 

: 나는 WebMvcConfigurerAdapter를 제거하고 빌드에서 내 DIST 디렉토리를 가리 키도록 정적 리소스를 구성

project 
|--build 
| |--dist 
| |--... 
|--node_modules 
|--src 
| |--app 
| |--assets 
| |--main 
| | |--java 
| | |--resources 
| | | |--config 
| | |--webapp 
| | | |--WEB-INF 

Webpack, Spring-Boot를 실행하거나 동일한 소스 및 구성 오버 헤드없이 응용 프로그램 서버에 배포 할 수 있습니다.

2

봄 부팅이 자동으로 다음 디렉토리 중 하나에 위치한 정적 웹 자원을 추가합니다 그러면 스프링을 구성 할 필요없이 파일 을 제공 할 수 있습니다.

src/main/resources/META-INF/resources/index.html 

src/main/resources/resources/index.html 

src/main/resources/static/index.html 

src/main/resources/public/index.html 
관련 문제