В своем первоначальном вопросе вы смешали как минимум 3 разные версии Spring Boot.1.1.10, 1.4.0 и 1.5.6.Никогда не смешивайте банки разных версий фреймворка (независимо от фреймворка), так как это приведет к интересным результатам.
Далее вы пытаетесь перехитрить плагин Spring Boot, самостоятельно управляя зависимостями.Пусть Spring Boot (и плагин), что они могут сделать для вас.
Судя по зависимости tomcat-jasper
, вы пытаетесь использовать JSP с Spring Boot (хотя и не рекомендуется).
Сначала давайте исправим управление зависимостями и используемую версию Spring Boot.
ПРИМЕЧАНИЕ: Я использовал самую последнюю версию Spring Boot 1.x, не стесняйтесь использовать немного более старую версию.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.13.RELEASE")
}
}
group 'batch'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
Далее давайте исправим версию tomcat, которую вы хотите использовать (см. , как использовать tomcat7 ).
ext['tomcat.version']='7.0.57'
Теперь очистите ваши зависимости, чтобы позволить весенней загрузке управлять зависимостями.Поскольку вы хотите создать архив WAR, ваша spring-boot-starter-tomcat
, а также другие зависимости tomcat должны быть зависимостью providedRuntime
(см. Файл войны с упаковкой ).
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
providedRuntime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat'
compile group: 'mysql', name: 'mysql-connector-java'
compile group: 'org.json', name: 'json', version: '20180130'
compile group: 'javax.servlet', name: 'jstl', version: '1.2'
providedRuntime group:'org.apache.tomcat', name:'tomcat-juli', version:property('tomcat.version')
providedRuntime group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: property('tomcat.version')
}
Вы также сможете удалить задачу jar
, поскольку она контролируется (и отключается) Spring Boot.Возможно, вы захотите использовать раздел springBoot
для настройки класса main
.
Все это должно привести к более или менее следующему build.gradle
.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.13.RELEASE")
}
}
group 'batch'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
sourceCompatibility = 1.7
targetCompatibility = 1.7
ext['tomcat.version']='7.0.57'
bootRun {
addResources = true
}
springBoot {
mainClass = com.Application
}
war {
baseName = 'Batch'
version = '0.1.0'
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
providedRuntime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat'
compile group: 'mysql', name: 'mysql-connector-java'
compile group: 'org.json', name: 'json', version: '20180130'
compile group: 'javax.servlet', name: 'jstl', version: '1.2'
providedRuntime group:'org.apache.tomcat', name:'tomcat-juli', version:property('tomcat.version')
providedRuntime group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: property('tomcat.version')
}
Что должно дать вам войну, которая является одновременно исполняемой и развертываемой.При развертывании на сервере tomcat, который вы хотите использовать, банки tomcat больше не находятся на пути к классам.