Я разрабатываю службу весеннего отдыха с использованием Gradle, Intellij и Tomcat. Я хочу перезагрузить мои изменения без повторного развертывания, поэтому я использую SpringLoaded. Но это не перезагружает мой проект. Даже горячая замена не работает. Вот мой build.gradle:Intellij + Gradle + SpringLoaded + Tomcat
def group = 'com.expecker'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'maven'
sourceCompatibility = 1.8
targetCompatibility = 1.8
def springVersion = '4.0.0.RELEASE'
def hibernateVersion = '5.0.7.Final'
def junitVersion = '4.11'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: junitVersion
compile "org.springframework:spring-core:$springVersion"
compile "org.springframework:spring-web:$springVersion"
compile "org.springframework:spring-webmvc:$springVersion"
compile "org.springframework:spring-orm:$springVersion"
compile "org.springframework:spring-jdbc:$springVersion"
compile "org.springframework:spring-tx:$springVersion"
compile "org.springframework:spring-orm:$springVersion"
compile "org.springframework:spring-context:$springVersion"
compile 'javax.servlet:javax.servlet-api:3.1.0'
compile 'jstl:jstl:1.2'
compile 'javax.servlet.jsp:jsp-api:2.2'
// compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13' it seems like this library isn't compatible with spring 4.1.x
compile 'com.fasterxml.jackson.core:jackson-databind:2.6.4'
compile "org.hibernate:hibernate-core:$hibernateVersion"
compile "org.hibernate:hibernate-entitymanager:$hibernateVersion"
compile 'commons-dbcp:commons-dbcp:1.4'
//compile('org.springframework:springloaded:1.2.5.RELEASE')
}
buildscript {
repositories { jcenter() }
dependencies {
classpath 'org.springframework:springloaded:1.2.5.RELEASE'
}
}
apply plugin: 'idea'
idea {
module {
inheritOutputDirs = false
outputDir = file("$buildDir/classes/main/")
}
}
/*
When built in OpenShift the 'openshift' profile will be used when
invoking mvn.
Use this profile for any OpenShift specific customization your app
will need.
By default that is to put the resulting archive into the 'webapps'
folder.
http://maven.apache.org/guides/mini/guide-building-for-different-environments.html
*/
gradle.buildFinished { buildResult ->
println 'Building pom.xml...'
pom {
project {
groupId "${group}"
artifactId 'app'
version "${version}"
packaging 'war'
}.withXml {
asNode().appendNode('profiles').
appendNode('profile').with {
appendNode('id', 'openshift')
appendNode('build').with {
appendNode('finalName', 'expecker')
appendNode('plugins').appendNode('plugin').with {
appendNode('artifactId', 'maven-war-plugin')
appendNode('version', '2.1.1')
appendNode('configuration').with {
appendNode('outputDirectory', 'deployments')
appendNode('warName', 'expecker')
}
}
}
}
}
}.writeTo("pom.xml")}
в моей конфигурации Tomcat У меня есть вариант Vm -javaagent:|here is my path to springloaded.jar| -noverify
. Я выбрал взорванный артефакт на вкладке развертывания.
Как вы можете видеть, я попытался включить мою пружинную банку в путь к классам (я не знаю, зачем это нужно, я видел это в некоторых статьях). Я попытался добавить эту банку в зависимость от компиляции, но тогда я не могу создать проект. Также я попытался не включать его, только установить в опциях vm. Вот некоторые мои наблюдения:
- простой горячая замена не работает с пружинным агентом, но работает без него
- Похоже Tomcat использовать \ из \ артефактов \ expecker \ разобранного \ expecker-1.0 - SNAPSHOT.war \ папка, но когда я делаю проект, изменения отражаются только с \ build \ папка.
Может ли кто-нибудь мне помочь?
Это похоже на работу с горячей заменой, но только с помощью «Обновление Tomcat Application -> Обновить классы и ресурсы» Но все же: это только горячая замена –