Eclipse STS + Spring Boot(1.5.7) + Gradle + Thymeleaf (Change Template Directory) + Embedded Tomcat + 외부 Tomcat

2017. 10. 17. 10:4899. 정리전 - IT/11. Java

Eclipse STS + Spring Boot(1.5.8) + Gradle + Thymeleaf (Change Template Directory)

+ Embedded Tomcat + 외부 Tomcat



전체구조


이클립스기동


마켓에서 등록할 목록


STS 프로젝트 생성

외부 tomcat 배포를 위해 War형태로 패키징 하길 바랍니다.


STS 프로젝트 생성된 프로젝트 구조


build.gradle 설정

buildscript { ext { buildVersion = "0.0.1-SNAPSHOT" springBootVersion = '1.5.7.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse-wtp' apply plugin: 'org.springframework.boot' apply plugin: 'war' war { baseName = "homepage-test" version = "${buildVersion}" } group = 'com.bluedigm' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } configurations { providedRuntime } dependencies { compile('net.sourceforge.nekohtml:nekohtml') compile('org.springframework.boot:spring-boot-starter-thymeleaf') compile('org.springframework.boot:spring-boot-starter-web') providedRuntime('org.springframework.boot:spring-boot-starter-tomcat') testCompile('org.springframework.boot:spring-boot-starter-test') }


주의 : 알아야 할 사항


compile('net.sourceforge.nekohtml:nekohtml') 는 닫는 tag를 쓰지 않아도 view단 컴파일 오류 발생하지 않음


또는 Embedded Tomcat인 bootRun으로는 정상 기동 되지만,

외부 Tomcat으로 기동시 Thymeleaf Compile 에러 발생시의 해결 대안 이기도 하다. (찾느라 3일 걸림 ㅠㅠ)

윈도우 환경에서는 에러가 나지 않지만, Mac 환경에서는 이하와 같이 Thymeleaf 코드 컴파일 에러가 터진다.

index.html의 <html> tag를 삭제하면 컴파일 오류가 나지 않고 th tag 컴파일이 잘된다. 완전 버그인듯.


환경 : Eclipse Oxygen / boot 1.5.7 / thymeleaf4 2.1.5


에러내용감상 : org.xml.sax.SAXParseException : 엔티티 참조에서는 '&' 바로 다음에 엔티티 이름이 와야 합니다.


ThymeleafConfig.java

package com.bluedigm.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;

@Configuration
public class ThymeleafConfig {
   
    @Bean
    public ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setPrefix("/views/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("LEGACYHTML5");
        resolver.setCacheable(false);
        return resolver;
    } 
}

neko html 을 활성화 하려면 이하와 같이 선언해야 함

resolver.setTemplateMode("HTML5"); --> resolver.setTemplateMode("LEGACYHTML5");


CommonController.java

package com.bluedigm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class CommonController {

   @RequestMapping("/")
   public String indexPage(@RequestParam(value="name", required=false, defaultValue="Donz") String name, Model model) {
      model.addAttribute("name", name);
      return "index";
   }
}


index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
   <title>Thymeleaf Test</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
   <p th:text="${'Hello ' + name + '!'}"></p>
</body>


gradle.build에 설정된 내용의 관련 jar 내려받기


[sts] -----------------------------------------------------

[sts] Starting Gradle build for the following tasks: 

[sts]      :homepage-helper:cleanEclipse

[sts]      :homepage-helper:eclipse

[sts] -----------------------------------------------------

:homepage-helper:cleanEclipseClasspath

:homepage-helper:cleanEclipseJdt

:homepage-helper:cleanEclipseProject

:homepage-helper:cleanEclipseWtpComponent

:homepage-helper:cleanEclipseWtpFacet

:homepage-helper:cleanEclipseWtp

:homepage-helper:cleanEclipse

:homepage-helper:eclipseClasspath

:homepage-helper:eclipseJdt

:homepage-helper:eclipseProject

:homepage-helper:eclipseWtpComponent

:homepage-helper:eclipseWtpFacet

:homepage-helper:eclipseWtp

:homepage-helper:eclipse


BUILD SUCCESSFUL


Total time: 0.414 secs

[sts] -----------------------------------------------------

[sts] Build finished succesfully!

[sts] Time taken: 0 min, 0 sec

[sts] -----------------------------------------------------


compile 및 war파일 생성하고 embedded tomcat  으로 실행하기


브라우저에서 확인


배포 환경처럼 구성하기 위해 "외부 Tomcat" 으로 실행하기

상기의 화면에서는 꼭 "save" 해 주세요.

그리고 기동하기!

bootRun과 동일한 환경으로 실행됨을 확인