Я пытаюсь создать простое приложение, используя gradle, groovy и spring-boot framework с этим кодом:
@Grab("thymeleaf-spring4")
@Controller
class ViewBasedApp {
def chapters = ["Quick Start With Groovy",
"Quick Start With Java",
"Debugging and Managing Your App",
"Data Access with Spring Boot",
"Securing Your App"]
@RequestMapping("/")
def home(@RequestParam(value = "name", defaultValue = "World") String n) {
new ModelAndView("home")
.addObject("name", n)
.addObject("chapters", chapters)
}
}
Это мой файл build.gradle:
group 'LoginApp'
version '1.0-SNAPSHOT'
apply plugin: 'groovy'
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
compile("org.springframework.boot:spring-boot-starter-web")
//compile("org.thymeleaf:thymeleaf-spring4") //first try
// compile("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect") //first try
compile 'org.springframework:spring-webmvc:3.0.0.RELEASE'
// https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 //secound try
compile group: 'org.thymeleaf', name: 'thymeleaf-spring4', version: '3.0.0.RELEASE'
// compile group: 'org.thymeleaf', name: 'thymeleaf-spring4', version: '4.1.6.RELEASE' //third try
}
html файл:
<html xmlns:th = "http://www.thymeleaf.org">
<head>
<title>Learning Spring Boot - Chapter 1</title>
</head>
<body>
<p th:text = "'Hello, ' + ${name}"></p>
<ol>
<li th:each = "chapter : ${chapters}" th:text = "${chapter}"></li>
</ol>
</body>
</html>
Чтобы запустить свое приложение, я использую интерфейс командной строки для весенней загрузки. Когда я использовал "Spring Run" в командной строке, у меня всегда возникала одна и та же ошибка: Не удалось найти артефакт: тимелеаф-пружина4: банка: в локальном (файл: / C: / Users / kubas / репозиторий).
Я попытался добавить «thimeleaf-spring4.jar» - загруженный со страницы maven в папку «репозиторий» и ничего, всегда одна и та же ошибка.
Кто-нибудь может предложить по этому поводу?




Я решил проблему, добавив зависимость от локального репозитория:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath("org.thymeleaf:thymeleaf-spring5:3.0.9.RELEASE")
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
compile("org.springframework.boot:spring-boot-starter-web")
compile("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect") //first try
compile 'org.springframework:spring-webmvc:4.0.6.RELEASE'
compile 'org.springframework:spring-web:4.0.6.RELEASE' //@EnableWebMvc @ComponentScan
}
Теперь тимелеаф взят из C: \ Users \ kubas \ org \ thymeleaf \ thymeleaf-spring5
Мне пришлось изменить аннотацию в app.groovy на @Grab("thymeleaf-spring5")
но теперь я не могу настроить путь к файлу моих шаблонов. Мой путь к этому файлу:
F:\gradle_login_aPP\src\main\resources\templates ...
Это ошибка:
Cannot find template location: classpath:/templates/
Я пробовал добавить файл application.properties в \src\main\resources\, но он не работает. Я знаю, что можно добавить префикс по умолчанию, но я не могу найти информацию о файле, в котором мне нужно это добавить. Любое предложение, как запустить эти шаблоны с проектом Gradle?
Я попытался изменить путь к классам шаблона, но ничего не произошло. Я добавил новый класс конфигурации с 'templateResolver.setPrefix ("classpath: / templates /");' и ничего
Я решил эту проблему. Я использовал файл .html, и вот как я использую этот файл в своем классе контроллера:
@RestController
class LoginServiceApplication {
@RequestMapping("/")
String home() {
def htmlContent = new File("F:\\APKA_W_SPRINGU\\Spring-apps-master\\AppWithLoginPage\\LoginService\\src\\main\\resources\\templates\\index.html").text
htmlContent
}
}
По первому вопросу - все, что мне нужно было сделать, это запустить основной класс в intelijj с помощью кнопки run (класс не должен содержать аннотацию @Grab!), Прежде чем я решил эту проблему, я использовал Spring CLI, и это было проблемой. Теперь все работает нормально.
Этот код работает без аннотации @Grab и только в STS