IDE를 사용하여 스프링 부트 메인 실행
다음 작업을 수행해야 하는 스프링 부트 응용 프로그램이 있습니다.
- 서블릿 컨테이너에 전쟁용으로 배치 가능
- 'mvn spring-boot:run'을 통해 실행 가능
(Eclipse 는 IntelliJ IDEA Community)를 하여 IDE 또는 Community)에서 이 을 실행할 에서 이 애플리케이션을 실행할 수도 있습니다.main리고실실 실실실다다
다음은 my pom.xml의 흥미로운 부분입니다(나는 spring-boot-starter-parent pom에서 상속받지 않습니다).
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
여기 .SpringBootServletInitializer:
@Configuration
@EnableAutoConfiguration
@ComponentScan("com.company.theproject")
public class Application extends SpringBootServletInitializer
{
private static final Logger logger = LoggerFactory.getLogger(Application.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(Application.class);
}
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
IDE 내에서 메인 실행 시 다음 오류가 발생합니다.
org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.java:183) ~[spring-boot-1.2.3.RELEASE.jar:1.2.3.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:156) ~[spring-boot-1.2.3.RELEASE.jar:1.2.3.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130) ~[spring-boot-1.2.3.RELEASE.jar:1.2.3.RELEASE]
... 12 common frames omitted
것 같다mvn spring-boot:run는, 하지 않는 더합니다.main직접적으로.
의 삭제providedspring-boot-starter-tomcat종속성은 이 문제를 해결하지만 전쟁이 서블릿 컨테이너 내에서 실행될 경우 문제를 일으킵니다.
은 '수정'을 실행하는 이다.mvn spring-boot:run인텔리J IDEA에서 메인 기능을 직접 실행하는 대신 사용할 수 있습니다.이것은 적절한 회피책이지만, 저는 이것이 왜 작동하지 않는지, 그리고 수정할 수 있는지 알고 싶습니다.
https://youtrack.jetbrains.com/issue/IDEA-140041에서 강하게 영감을 받은 회피책은 메인 클래스를 테스트클래스 패스(임베디드 서블릿 포함)로 시작하는 것입니다.
순서(IntelliJ 16):
Run->Edit Configurations->Add new configuration-> ★★Applicationdiscloss.discloss.- ★★
Main class로로 합니다.<your.main.class> - ★★
Use classpath of module로로 합니다.<*>_test( 트트))))))!) Ok★★★★★★★★★★★★★★★★★」Run그거야!
https://youtrack.jetbrains.com/issue/IDEA-107048과 관련이 있을 수 있습니다.
는 IntelliJ IDEA를 .providedCLASSPATH에 의존하며 Andy가 말했듯이 스프링이 임베디드 서블릿 컨테이너를 만들 수 없는 이유입니다.
2005년부터 이 기능에 대한 요구가 있었습니다.https://youtrack.jetbrains.com/issue/IDEABKL-99
되어 있는 패스로서 하는 것, JVM 하는 것, 하는 것 등이 .compiled ) 빌딩 ( )vs ( ( ( )provided
IntelliJ 2018에서도 같은 문제가 있었습니다.처음에 인텔리J에 봄 프로젝트용 maven 라이브러리를 추가했는지 확인합니다.
솔루션은 다음과 같습니다.
★★★★★★★★★★★★★★★로 이동
Run->Edit Configurations.선택합니다.
Application""마크를 켜주세요.
Include dependencies with "Provided" scope.OK->RUN
Project structure -> Dependencies 탭에서 spring-boot-starter-tomcat 의존관계 범위를 compile로 변경하여 이 작업을 수행할 수 있었습니다.이로 인해 pom.xml에는 영향을 주지 않지만 이 의존관계를 스프링 부트 실행 구성에서 사용할 수 있습니다.
이 설정을 변경하는 방법에 대한 이미지를 보려면 여기를 클릭하십시오.
mvn spring-boot:run포함한다provided클래스 경로를 만들 때 종속성이 있습니다.그것은 인터리 JE 아이디어처럼 들리네요.클래스 경로에서 Tomcats가 없으면 스프링 부팅의 컨테이너를 생성할 수 없습니다.의심할 여지 없이, 이는 종속성을 제공하기 위해 컨테이너가 없다면 클래스 경로 경로 경로를 제공해야 합니다.
메인 방법을 실행하는 기본 클래스 경로를 재정의함으로써 문제를 해결할 수 있습니다.spring-boot-starter-tomcat의존.
이 페이지를 찾아서 maven 프로파일을 사용하여 프로파일을 관리합니다.
<profiles>
<profile>
<id>PROD</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>DEV</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>TEST</scope>
</dependency>
</dependencies>
</profile>
</profiles>
메인 클래스를 구성합니다.beforeLanuce명령을 설정합니다.
mvn clean compile -Pdev
제공된 libaray(spring-boot-starter-tomcat)를 프로젝트 구성에 추가함으로써 Intelij IDEA 2017.2에서 이 문제를 해결할 수 있었습니다.
[파일] -> [프로젝트 구조]를 선택합니다.Libraries(라이브러리)를 선택하고 새 프로젝트 라이브러리(타입 = From Maven...)를 추가합니다.대화상자를 사용하여 spring-boot-starter-tomcat을 검색하고 올바른 버전을 선택한 후 OK를 클릭하여 추가합니다.라이브러리가 외부 라이브러리 목록에 추가됩니다.
단점은 Spring Boot 버전이 변경된 경우 이 라이브러리를 삭제하고 새 버전을 추가해야 한다는 것입니다.
이하의 프로파일과 순서를 사용하면, 다른 환경에 맞추어 변경하지 않고 인텔리J 로 개발을 가능하게 하는 프로파일을 maven 에 추가할 수 있습니다.
<!-- Leave original dependency as-is -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<profiles>
<!-- Enable this profile to run in IntelliJ. IntelliJ excludes provided dependencies from compile by default. -->
<profile>
<id>intellij</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
Internet ExplorerJ를 마우스 오른쪽 버튼으로 클릭하고 프로파일 아래에 있는 프로젝트 버튼을 클릭합니다.intellij.
이 단계를 따르십시오.
오른쪽 상단 오른쪽 오른쪽 왼쪽에서 드롭다운 구성을 클릭하고 편집 구성을 선택하고 새 창을 열고 새 창이 열립니다.
이 창에서 "+" 버튼을 클릭하고 스프레드쉬트를 선택하고 스프레드 부팅을 선택합니다.
언급URL: https://stackoverflow.com/questions/30237768/run-spring-boots-main-using-ide
'programing' 카테고리의 다른 글
| 특정 투고 유형에 대해 Gutenberg/블록 에디터를 비활성화하는 방법 (0) | 2023.03.16 |
|---|---|
| 단일 페이지 애플리케이션(ARIA 등)에서의 접근성 (0) | 2023.03.16 |
| 입력 유형=파일이 반응 구성 요소에서 동일한 파일을 선택하도록 허용하는 방법 (0) | 2023.03.16 |
| Mongoose 'static' 메서드 대 'instance' 메서드 (0) | 2023.03.16 |
| 다이제스트를 강제하는 $scope가 없을 때 AngularJS, Jasmine 2.0의 약속을 어떻게 해결합니까? (0) | 2023.03.16 |

