spring boot war(tomcat 포함 안 함)
maven이 내장된 Tomcat을 사용하지 않고 war 파일을 만들고 싶습니다.여기 내 폼의 관련 부분이 있다.
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Add tomcat only if I want to run directly -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
...
mvn 패키지를 실행하면 tomcat*.jar가 제공 lib 폴더 내에 있지만 lib 폴더 내에 있는 전쟁이 발생합니다.빌드-툴-플러그인-매븐 패키징을 읽었는데 뭐가 잘못됐는지 모르겠어요.
주요 아이디어는 애플리케이션을 애플리케이션으로 실행하는 것입니다.고객이 애플리케이션 서버에 도입하는 방법을 알고 있습니다.
M의 힌트를 따르세요.Deinum I은 Tomcat-dependency를 제외했다.
다음 pom.xml(관련 스니펫)을 사용하여maven clean package원하는 결과를 얻을 수 있습니다.
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Add tomcat only if I want to run directly -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
...
idea-user 경고:실행 구성에서 "제공된 범위에 종속성 포함"을 활성화해야 합니다(자세한 내용은 IntelliJ Idea에서 스프링 부트 응용 프로그램을 시작할 수 없음 참조).
이것이 스프링 부트 방식인지 아닌지는 잘 모르겠지만 tomcomcat jars를 사용하여 제외할 수 있습니다.maven-war-plugin배열.즉, 다음 항목을 pom.xml에 추가합니다.
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<packagingExcludes>WEB-INF/lib/tomcat-*.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
이 방법을 사용하면 생성된 전쟁은 실행할 수 없습니다(java -jar를 사용하여 명령줄에서 실행할 수 없습니다).단, 임의의 서블릿컨테이너에만 전개할 수 있습니다.
저도 같은 필요성을 느꼈지만 언급한 종속성을 제거하지 못했습니다.이것을 추가하여 WAR 파일을 얻을 수 있었습니다.<packaging>war</packaging>내 폼 파일에 의존해
이 봄기사를 참고해서...공유하기 때문에 다른 사람에게도 도움이 될 수 있습니다.
에서의 스프링 부트스타터 의존관계 변경
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
여기에는 내장된 Tomcat 서버가 제외됩니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
임베디드 Tomcat 없이 기존 Spring Boot 프로젝트에서 최종 WAR을 구축하는 가장 쉬운 방법은 다음과 같습니다.
1) 아티팩트의 WARPackaging을 설정합니다.<packaging>war</packaging>
2) 다음을 제공하도록 Tomcat Server 종속성을 설정합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
기존 스프링 부트 의존 관계 중 일부가 기본적으로 포함되어 있는 경우 제외합니다.예:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
바로 그거야.
언급URL : https://stackoverflow.com/questions/25991789/spring-boot-war-without-tomcat-embedded
'codememo' 카테고리의 다른 글
| Angular JS를 사용한 모바일 애플리케이션 (0) | 2023.02.16 |
|---|---|
| 앵귤러 블루버드는 어떻게 사용하나요? (0) | 2023.02.16 |
| 스프링 부트 - java.lang.ClassNotFoundException: javax.servlet.Servlet Context에서 Embedded Web Application Context를 시작할 수 없음 (0) | 2023.02.16 |
| 리액트 리액트 리액트 리액트 리액트 리액트 리액트 리액트 리 (0) | 2023.02.16 |
| 폼 제출 시 모든 폼 필드를 ng-touched로 프로그래밍 방식으로 설정 (0) | 2023.02.16 |