2016-02-06 6 views
0

Я разрабатываю службу весеннего отдыха с использованием 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 \ папка.


Может ли кто-нибудь мне помочь?

+0

Это похоже на работу с горячей заменой, но только с помощью «Обновление Tomcat Application -> Обновить классы и ресурсы» Но все же: это только горячая замена –

ответ

0

Моя вина, подпружиненная, не поддерживает добавление новых классов. Итак, на самом деле все работает так, как ожидалось.