我有一個通過gradle變成jar的spring引導項目。Gradle包含來自webapp目錄的Freemarker文件
這是我build.gradle
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'jetty'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:1.5.1.RELEASE") {
exclude module: "spring-boot-starter-tomcat"
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty', version: '1.5.1.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.5.1.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.6.RELEASE'
compile group: 'org.springframework', name: 'spring-context-support', version: '4.3.6.RELEASE'
compile group: 'org.springframework', name: 'spring-orm', version: '4.3.6.RELEASE'
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compile group: 'org.freemarker', name: 'freemarker', version: '2.3.23'
compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.5'
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.1.4.Final'
compile group: 'commons-validator', name: 'commons-validator', version: '1.5.1'
compile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.5.1.RELEASE'
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE")
}
}
jar {
from {
(configurations.runtime).collect {
it.isDirectory() ? it : zipTree(it)
}
}
baseName = 'carefree-cooking'
version = '0.1.0'
manifest {
attributes 'Main-Class': 'carefree.cooking.Application'
}
}
springBoot {
executable = true
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
在我@Configuration
我有Freemarker的配置方式如下
@Bean(name = "freemarkerConfig")
public FreeMarkerConfigurer freemarkerConfig()
{
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("/");
return configurer;
}
@Bean(name = "viewResolver")
public FreeMarkerViewResolver viewResolver()
{
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setPrefix("/WEB-INF/template/");
viewResolver.setSuffix(".ftl");
return viewResolver;
}
我控制器
@Controller
@RequestMapping("/")
public class IndexController
{
@RequestMapping()
public String index(ModelMap model)
{
return "page";
}
}
而且我page.ftl
位於
src\main\webapp\WEB-INF\template\page.ftl
而只是說你好的世界。
每當我通過運行
./gradlew clean jar
建立我的罐子我注意到,在創建罐子page.ftl
不存在
當我跑我的春天啓動的應用程序無法找到page.ftl
,但是如果我創建一個目錄
webapp\WEB-INF\template\page.ftl
其中罐子位於那麼page.ftl
被發現。
如何配置gradle
以包含page.ftl
並將我的@Configuration
類配置爲在那裏查找page.ftl
?
我曾嘗試加入
from("${projectDir}/src/main") {
include('webapp/WEB-INF/**')
}
要我jar任務中的build.gradle,雖然這保證了page.ftl
包括在罐子裏,我的應用程序仍然無法找到它的一些原因。