programing

스프링 부트 클래스 패스

i4 2023. 4. 6. 20:46
반응형

스프링 부트 클래스 패스

여기 Spring Boot 문서에는 정적 콘텐츠 제공에 대해 다음과 같이 나와 있습니다.

기본적으로는 Spring Boot은 클래스 경로 내의 /static(또는 /public 또는 /resources 또는 /META-INF/resources) 디렉토리의 정적 콘텐츠를 처리합니다.

디렉토리의 모든 컨텐츠는 다음과 같습니다.

src/main/resources

클래스 패스내에 카피되기 때문에, 다음의 장소에 스태틱 컨텐츠를 넣을 수 있습니다.

src/main/resources/static

모든 것이 잘 될 것이고, 저는 제 정적 콘텐츠를 제 밑에 둘 수 있기 때문에 행복합니다.src디렉토리로 이동합니다.

하지만 이에 대해 몇 가지 질문이 있습니다.

  1. 문서에 정적 콘텐츠를 삽입하지 않는 이유는 무엇입니까?src/main/resources/static수업 경로에 대해 말하는 대신 (이것이 좀 혼란스럽다고 생각합니다)
  2. 에 있는 내용물이src/main/resources/항상 클래스 패스에 복사됩니까?
  3. Java 클래스 및 패키지 이외의 클래스 패스에서 무엇을 찾을 수 있는지 설명하는 Spring Boot 공식 문서가 있습니까(지금까지 모든 콘텐츠를 찾을 수 있는 것은 Spring Boot뿐입니다).src/main/resources/)?

/src/main/resources메이븐 프로젝트 구조 컨벤션입니다.프로젝트 내에서 리소스를 배치하는 경로입니다.빌드 단계 동안 Maven은 파일을 가져와 실행 시 클래스 경로에서 사용하기 위한 적절한 위치에 저장합니다(예: 실행 파일)..jar클래스 패스에서 사용되는 물리 파일시스템 위치(와 함께)java-cp옵션) 등입니다.

애플리케이션을 직접 빌드하거나 다른 빌드 도구를 사용하여 빌드할 수 있습니다.이런 경우에는/src/main/resources존재하지 않습니다.단, 그 목적은 클래스 패스가 동일하도록 하는 것입니다.즉, 같은 자원과.class파일을 표시합니다.

Spring 부트 매뉴얼에서는 클래스 패스에 대해 설명합니다.프로젝트 셋업 방법에 대한 추측은 하지 않기 때문입니다.

클래스 패스에는 추가 라이브러리(JAR)도 포함되어 있습니다.이 라이브러리에는,static이 폴더는 정적 리소스를 제공하기 위해 포함됩니다.따라서 문서에는 폴더만 기재되어 있습니다.src/main/resources/static불완전합니다.

애드 2: 디폴트 Maven 설정을 조작하지 않는 한, 이것을 상정하는 것이 안전합니다.

광고 3: Oracle 공식 문서 https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html부터 시작할 수 있습니다.힌트: 물론 리소스 폴더의 내용뿐만 아니라 클래스 경로에 있는 모든 컴파일된 클래스도 해당 이름이 됩니다.

이전 답변에 덧붙이자면 Spring Boot Maven 플러그인(의 spring-boot-maven-plugin)입니다.pom.xml메이븐그 기능 중 하나는 의존관계 라이브러리를 포함한 앱의 콘텐츠를 실행 가능한 JAR 파일 내와 같은 런타임 클래스 경로에서 사용할 수 있도록 하는 것입니다.

언급URL : https://stackoverflow.com/questions/34160419/spring-boot-classpath

반응형