2

I am trying to get a simple Spring-Boot application to work with Spring Loaded and Gradle without any success. I have tried the following:

  1. Using Spring-Boot with the bootRun task simply reloads static resources just fine with a simple F5 in the browser

  2. If I use bootRun again and change a class through a text editor and the use compileJava it doesnt work.

  3. If I run it with IntelliJ Application make a change in an existing controller and use the IntelliJ make it works only for existing methods. Doesnt update new methods, change of signatures etc.

  4. Using IntelliJ with VM argument:

    -javaagent:C:\Users\myuser\.m2\repository\org\springframework\springloaded\1.2.1.RELEASE\springloaded-1.2.1.RELEASE.jar -noverify

Still does nothing.

Ideally, I would like to perform the process through using Gradle only - so I'm IDE independent

Please have a look at the Github project so you can see my sample code: Sample Project

Just perform any changes in the DemoController

ChrisGeo
  • 3,807
  • 13
  • 54
  • 92

1 Answers1

2

Seems the trick was to use the task build bootRun instead of a simple 'bootRun`.

This is a Gradle build file that also uses the watch plugin with incremental compiles when Java classes change:

buildscript {
    ext {
        springBootVersion = '1.2.2.RELEASE'
        springLoadedVersion = "1.2.1.RELEASE"
    }
    repositories {
        mavenCentral()
        mavenLocal()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("org.springframework:springloaded:${springLoadedVersion}")
        classpath 'com.bluepapa32:gradle-watch-plugin:0.1.5'
    }
}

repositories {
    mavenCentral()
    mavenLocal()
    jcenter()
}

apply plugin: "java"
apply plugin: "spring-boot"
apply plugin: 'idea'
apply plugin: 'application'
apply plugin: 'com.bluepapa32.watch'


mainClassName = "com.example.my.Application"

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    runtime("org.hsqldb:hsqldb")
}

task wrapper(type: Wrapper) { gradleVersion = '2.3' }

idea {
    module {
        inheritOutputDirs = false
        outputDir = new File("$buildDir/classes/main/")
    }
}

compileJava {
    //enable compilation in a separate daemon process
    options.fork = true
    //enable incremental compilation
    options.incremental = true
}

watch {
    java {
        files files('src/main/java')
        tasks 'compileJava'
    }
}
ChrisGeo
  • 3,807
  • 13
  • 54
  • 92