kuc*_*ram 36 spring spring-boot spring-loaded
我想在我的Spring Boot项目中使用热插拔.不知怎的,我无法通过在我的IDE(IntelliJ)中运行它来使其工作,尽管文档涵盖了这个主题.我只需使用带有VM属性的main方法运行该类:
-javaagent:/path/to/jar/springloaded.jar -noverify
Run Code Online (Sandbox Code Playgroud)
我的问题是,我该如何使其发挥作用?:-)
进一步的问题是如何使用装有Gradle和IntelliJ的弹簧.我发现强制开发人员手动下载JAR,将其置于某处并使用JVM参数指向它是非常不方便的.有没有更好的方法(我应该配置自己的任务来完成工作并从我的IDE作为Gradle任务运行它)?
geo*_*and 25
如果想要只能从IntelliJ运行应用程序(在主方法上使用右键单击 - >调试)并且根本不涉及Spring Boot的Gradle任务,则只需执行以下操作:

注意我是如何添加的VM Option:( -javaagent:/path/to/springloaded-${version}.jar -noverify你可以在这里下载)

Build- >Make ProjectDei*_*ote 24
您需要按照文档中的说明配置项目:
之后,您必须配置IDE以在build/classes/main中输出已编译的类(使用Idea插件,您可以配置上面链接中指定的outputDir,然后调用gradle idea以完成它).
然后,如果您使用调试模式启动任务(运行/ bootRun)或从IDE运行主类,则在编译类时,热代码重新加载应该起作用.
这里的问题是IntelliJ与Eclipse不同,它在保存时不会自动编译一个类(即使你将编译器配置为"Build on save",它也不会在运行/调试时执行).这显然是由IntelliJ制作的设计决策 - 如此处所述Intellij IDEA Java类不能自动编译保存(CrazyCoder答案).
如果spring boot提供了一个配置选项来监视源代码文件并在它们发生更改时重新编译它们将是理想的 - 这就是Grails所做的.但我认为这样的想法还不存在,也许甚至不可能将它与gradle结合起来,gradle负责管理类路径和那种事情.
因此,据我所知,有两种选择:
首先是单调乏味,第二是慢:).实际上还有另一种选择:更改IDE :-D(或安装EclipseMode IntelliJ插件).
我设法在一个Maven项目中使用IDEA执行此操作,它应该与Gradle版本一起工作,我猜,我的程序如下.
Maven插件设置如下所示:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
现在更改一些代码并重新加载页面.
我在IntelliJ Idea中运行SpringBoot和Gradle.自动重装正在100%工作
第1步:获取SpringLoaded
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:1.2.1.RELEASE"
classpath 'org.springframework:springloaded:1.2.1.RELEASE'
}
}
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'
apply plugin: 'spring-boot'
repositories {
jcenter()
mavenLocal()
mavenCentral()
}
mainClassName = 'com.noxgroup.nitro.NitroApp'
idea {
module {
inheritOutputDirs = false
outputDir = file("$buildDir/classes/main/")
}
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:1.2.1.RELEASE")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}
jar {
baseName = 'org.noxgroup-nitro'
version = '0.1.0'
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
Run Code Online (Sandbox Code Playgroud)
第2步:创建Application.properties
并添加以下内容:
spring.thymeleaf.cache=false
Run Code Online (Sandbox Code Playgroud)
第3步:运行bootRun任务
(不仅仅是标准的运行任务 - 这增加了SpringLoaded功能)
第4步:编译Java
通过点击"Make Project"或按"Ctrl/Command + F9"来创建Java文件
在更高版本的gradle中,您可以启动命令窗口并运行
gradle -t classes
Run Code Online (Sandbox Code Playgroud)
这将启动一个查找源代码更改并重新编译它们的进程.
在另一场比赛中.
gradle bootRun
Run Code Online (Sandbox Code Playgroud)
对java或groovy src的任何更改都将自动重新编译.虽然不是intellij具体,但你最好还是选择intellij.您甚至可以使用自己喜欢的文本编辑器(例如submlime,atom).
| 归档时间: |
|
| 查看次数: |
33244 次 |
| 最近记录: |