Synology Nas + SpringBoot + Maven + Execute Jar 배포하기 (Intellij)

Intellij + Synology Nas + SpringBoot + Maven + Execute Jar 배포하기

시놀로지 나스가 Tomcat7을 지원하긴 하지만 SpringBoot의 장점인 Embedded Tomcat, Jar실행을 이용하고자 시도하여 성공한 기록이다. 애초에 war로 배포하길 원했지만 패키지센터로 설치한 Tomat7에 conf, bin, logs 등과 같은 세부 폴더를 찾지 못했고 SpringBoot에서 War배포를 위해 바꿔줘야 하는 소스가 상당부분 있었고, 필요했던 서버 설정은 application.properties에서 할 수 있었으므로 그냥 Jar배포로 진행하게 되었다.

1. pom.xml파일에 maven-jar-plugin 추가하고 mainClass속성에 SpringBootApplication 클래스 지정해주기.

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
							<mainClass>com.htrucci.datagokrserver.DatagokrserverApplication</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>

		</plugins>
	</build>

 
2. @Configuration @EnableAutoConfiguration @ComponentScan 세개 어노테이션을 추가한다.

package com.htrucci.datagokrserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class DatagokrserverApplication {

	public static void main(String[] args) {
		SpringApplication.run(DatagokrserverApplication.class, args);
	}
}

3. Intellij에서 Shift 두번눌러 Search에서 Maven을 찾아 Tool Window를 띄워준다.
     maven goal빌드를 위해 package 입력 후 Execute


4.  프로젝트의 classpath (target, classes)에 들어가보면 artifact명으로 jar파일이 생성되어 있는 것을 볼 수 있다.
5.  Nas서버에 DSM을 이용하든 FTP를 이용하던 jar파일을 옮겨주고 ssh로 접속하여 아래와 같이 nohup모드로 실행한다.
    (콘솔을 닫더라도 애플리케이션이 계속 떠있을 수 있도록)  war톰캣배포와 달리 jar명이 url에 포함되지 않는다.
    로컬에서 돌릴때와 같은 url로 host만 바꿔 테스트하면 정상임을 확인할 수 있다.

You may also like...

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.