이전까지 만들었던 SpringbootApi 를 jar파일과 war파일로 빌드를 해볼것이다
jar/war 파일 빌드 하는법을 순서대로 적어놨다.
jar 파일로 빌드하기
1. pom.xml 파일 다음과 같은 위치에<packaging>jar</packaging> 추가
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>kr.ac.daegu</groupId>
<artifactId>SpringbootApi</artifactId>
<version>0.0.1-WAR-SNAPSHOT</version>
<name>SpringbootApi</name>
<description>SpringbootApi</description>
<properties>
<java.version>1.8</java.version>
</properties>
<packaging>jar</packaging>
<dependencies>
2. 우측 maven > Lifecycle > (필드 페이즈) package를 실행하면 > target에 SpringbootApi.jar 파일이 생성
이 파일을 open in Explorer or Terminel 로 연다.
package시 오류가 뜰때 해결법
https://s-yeonjuu.tistory.com/26
setting ->Build, Execution, Deployment -> Build Tools -> Maven
Use Maven wrapper로 되어 있던 Maven home path를
Bundled (Maven 3)로 변경하고 apply.
3. 관리자 cmd창에서 해당 파일 위치로 들어가서 jar 파일 실행하기
jar파일 실행 명령어 : java -jar jar파일명.jar.
위 사진과 같이 intellij에서 실행하지 않고도 cmd창에서
jar파일로 실행이 성공했다. Postman에서 동작도 잘 되는것을 확인!
war 파일로 빌드하기
1. pom.xml 파일을 위와 같은 위치에<packaging>war</packaging> 추가
2. 그리고 war파일로 빌드를 위해 SpringbootApiApplication 에서 수정이 필요하다
@SpringBootApplication
@MapperScan(basePackages="kr.ac.daegu.springbootapi")
public class SpringbootApiApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootApiApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootApiApplication.class);
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Resource[] res =
new PathMatchingResourcePatternResolver()
.getResources("classpath:mappers/*Mapper.xml");
sessionFactory.setMapperLocations(res);
return sessionFactory.getObject();
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
여기서 두가지 달라진 점을 볼 수 있다.
- SpringBootServletInitializer 를 상속받는다
- @Override configure
3. 우측 maven > Lifecycle > (필드 페이즈) package를 실행하면 > target에 SpringbootApi.war 파일이 생성
이 파일을 open in Explorer or Terminel 로 연다.
4. 여기서 war파일을 설치해놓은 tomcat/webapps로 복사
(ROOT파일은 따로 백업 후 폴더에서 치우기)
위 사진처럼 기존의 ROOT파일을 삭제하지 않고 이름을 바꿔 남겨놨다.
5. 관리자 cmd창에서 해당 파일 위치로 들어가서 /startup.bat
C:\apache-tomcat-8.5.72\bin>startup.bat
6. war 파일의 이름에 따라 url 주소가 바뀐다. 아래 사진을 참고하자 (localhost:8080/파일이름/)
url 주소를 파일이름인 SpringbootApi/ 를 붙여서 실행성공!
Tomcat (.war) 파일로 빌드하는 것이 (.jar) 파일보다 훨씬 복잡했다..
'Spring Boot > Spring Boot' 카테고리의 다른 글
61 : 답글 깊이 제한 (SpringbootApi + JPA) (0) | 2021.11.06 |
---|---|
60 : SpringbootApi 관련 질문 (0) | 2021.11.03 |
58 : 답글 구현하기 (SpringbootApi + JPA) (0) | 2021.11.01 |
56 : 복수의 트랜잭션으로 Comment 처리 (Springboot + JPA) (0) | 2021.10.27 |
55 : JPA+Pageable 페이징처리 (Springboot + JPA) (0) | 2021.10.26 |