티스토리 뷰

spring boot 프로젝트를 배포하려고 하는데 jar 파일부터 만들라고 한다. 아무리 해도 jar가 안만들어져서 찾다 찾다보니까 war로 만들어야 하는 것이었다! 진짜 멍청하게 jsp를 사용하면 war로 빌드하는게 기본이었다네ㅠㅠ jar, war가 뭔지 몰라서 한참 헤매다가 다음 블로그에서 확인했다.

 

https://ifuwanna.tistory.com/224

 

[Java] JAR WAR 차이점 및 특징 ( + EAR )

JAR (Java Archive) WAR (Web Application Archive) 모두 JAVA의 jar 툴을 이용하여 생성된 압축(아카이브) 파일이며 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 있도록 관련 파일(리소스, 속성파일 등).

ifuwanna.tistory.com

내가 기억하려고 한번 적어본다.

 

파일 구조는 대충 이렇다. jsp로 구현했기 때문에 WEB-INF 밑에 jsp 파일들이 있다.

 

application.properties는 다음과 같다

# server port setting
server.port=9090

#servlet context path setting
server.servlet.context-path=/happyhouse


#ViewResolver setting
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

#DBCP  setting
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/happyhouse?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
spring.datasource.username=ssafy
spring.datasource.password=ssafy
spring.datasource.type=org.apache.commons.dbcp.BasicDataSource

#MyBatis Setting
#mybatis.config-location=classpath:/spring/SqlMapConfig.xml
mybatis.type-aliases-package=com.ssafy.happyhouse.model.dto
mybatis.mapper-locations=classpath:mapper/*.xml

 

나는 maven을 쓰기 때문에 인텔리제이 옆에 maven의 package로 빌드해 줬다. 

이제 대망의 pom.xml을 건드려야 한다. 

우선 war로 빌드하기 위해선 packaging에서 war로 기입해줘야 한다. 그리고 처음 war가 실행될 때 메인 클래스를 표시해준다.

<groupId>com.ssafy</groupId>
<artifactId>happyhouse_final</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>happyhouse_final</name>
<description>HappyHouse with SpringBoot</description>
<properties>
  <java.version>1.8</java.version>

  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <start-class>com.ssafy.happyhouse.HappyhouseSpringbootApplication</start-class>
  <webapp.lib>${basedir}/src/lib</webapp.lib>
</properties>

그리고 war를 실행하기 위해서 톰캣을 내장해야 하는데 dependency에 추가해줬다

<!-- JSP -->
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

이제 빌드하려니까 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project happyhouse_final: There are test failures 에러가 뜬다. 찾아보니까 maven-surefire-plugin이란걸 플러그인으로 설치해야 하는 것 같다.

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <configuration>
    	<testFailureIgnore>true</testFailureIgnore>
    </configuration>
  </plugin>
  <plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <fork>true</fork>
    <mainClass>com.ssafy.happyhouse.HappyhouseSpringbootApplication</mainClass>
  </configuration>
  <executions>
    <execution>
      <goals>
      	<goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  </plugin>
</plugins>

그리고 package 실행하면 war 파일이 빌드된다!

java -jar happyhouse_final-0.0.1-SNAPSHOT.war

커맨드 창에서 java -jar로 war 파일을 실행하면 ide에서 실행한 것 같이 spring boot가 가동된다! 페이지도 잘 뜬다!

'CICD' 카테고리의 다른 글

맥 ec2 ssh - Permission denied (publickey) 에러 해결  (0) 2021.09.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함