SpringBoot + Maven => JAR 파일 생성
- 개발 환경
- 맥북 : MojaveOS 10.14.1
- IDE : Intellij
- SpringBoot : 2.1.2
- Goal
- SpringBoot와 Maven으로 JAR 파일 생성
- 생성된 JAR 파일 외부 서버에 업로드
- 핵심 사항
- pom.xml에 build 설정
- 외부 라이브러리(ex. json, ojdbc 등) maven 에 추가
- JAR 파일 생성
1. mvnw 설치 및 ojdbc 라이브러리 추가
외부 라이브러리(ojdbc8.jar)를 dependency에 추가하기 위해 mvnvm 을 설치해야 한다.
아래와 같이 실행한다.
- brew update : 디렉토리 위치 상관 없음
- brew install mvnvm : mvnvm을 설치한다.
- 프로젝트 디렉토리에 들어간다.
- 'ojdbc8.jar' 라이브러리 파일 위치로 들어간다.
- 해당 라이브러리를 mvn으로 install한다. 명령어는 아래와 같다.
mvn install:install-file -Dfile="ojdbc8.jar" -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1 -Dpackaging=jar
⇒ "Build Success"가 확인되면 완료!
⇒ 아래 이미지와 같이 결과가 나오면 된다.
2. pom.xml 작성
Code 참고
<?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 http://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.1.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>Test</groupId> <artifactId>Test</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Test</name> <packaging>jar</packaging> <description>Test</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <start-class>Test.StartApplication</start-class> <webapp.lib>${basedir}/src/lib</webapp.lib> </properties> <dependencies> <!--외부 라이브러리 ojdbc8을 dependency에 추가--> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.1</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180130</version> </dependency> <!--기타 Spring 관련--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>2.1.0.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <configuration> <!-- jar 파일을 dependencies와 연결해주는 설정 --> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
- 코드 중요사항
- <packaging> : jar 설정 필수
- <properties>
<start-class>의 경우 SpringBoot에서 첫번째로 실행되는 클래스 지정
<webapp.lib> 의 경우 외부 라이브러리 경로를 지정하기 위해 작성. 지정된 경로를 통해 <dependency>에 외부 라이브러리 추가(ex. <groupId>com.oracle~)
- <build> : 각각의 plugin이 현재 어떤 역할을 하는지 정확하게 모름
3. Maven(package) Build
maven package를 설명하기 전 우선 maven에 라이프 사이클에 대해 알아 볼 것
LifeCycle은 Clean / Default / Site 3가지로 나뉜다. 각각의 역할은 아래 블로그에서 확인 해볼 것
http://wiki.gurubee.net/display/SWDEV/Maven+Lifecycle?
- Maven package로 빌드한다.
- 에러 발생 시 개별적으로 해결 필요
- 필자의 경우 SpringBootApplication 인식 X / 외부 라이브러리 빌드 X 에러 발생했으나 위에서 언급한 내용("2. pom.xml 작성 → <start-class>와 <properties>") 그대로 수정해 해결
4. Build Success 시 JAR 파일 실행
- 아래 이미지와 같이 지정된 경로의 jar 파일을 실행한다.
- 실행 명령어는 "java -jar 파일명.jar"
5. 배포 방법
- Build된 '~.jar' 파일과 '~dependencies.jar'파일을 함께 배포한다.
주요내용
- SpringBoot는 tomcat을 내장하고 있어 jar 파일로 배포 할 수 있다.
- Maven은 프로젝트 빌드(컴파일, 테스트, 패키징), 배포 등에 관한 전반적인 프로젝트 관리 기능을 제공한다.
- Intellij 로 배포하는 것보다 Maven Package를 활용한 배포가 빌드 시 좀 더 일관성이 있다...
⇒ Intellij Build로 JAR 파일을 생성 했을 경우 필자는 똑같은 방식으로 해도 될 때가 있고 안될 때가 있었다.. 따라서 Maven Package로 빌드 하는 게 가장 확실한 방법이다.
- pom.xml 파일 설정이 중요하다. build 부분과 외부 라이브러리 dependency 추가
- maven으로 빌드 시 외부 라이브러리를 pom.xml에 추가해줘야 한다.
- mvn 설치 필수!!!
'Java' 카테고리의 다른 글
Template Pattern(템플릿패턴) 적용기 (0) | 2022.03.04 |
---|---|
Transaction & AOP (0) | 2020.02.26 |
전략패턴(Strategy Pattern)를 이용해 코드 리팩토링 (0) | 2020.02.13 |
Spring Transaction 관리 (0) | 2020.02.11 |
Node.js + mongoDB 설치 및 mongoose 연동 (0) | 2018.12.24 |