Gradle + IntelliJ:普通 Java 应用程序中的 HotSwap
Gradle + IntelliJ: HotSwap in a plain Java application
对于普通 Java/Swing 应用程序,我目前正在将 ant 构建脚本迁移到 gradle 构建。
虽然我很快 运行 得到它,在 IntelliJ IDEA 中调试 时不再拾取重新编译 类 中的更改。
我所有的 build/run 操作都是 delegated to gradle。
我考虑过的事情:
- 这不是 How to enable hot swapping in debug mode with gradle and jetty? 的副本,我正在使用独立的 Java 应用程序,而不是 Spring
- 同理,https://github.com/thomas-adriano/gradle-hot-swap不适用,我觉得
- 我希望 HotSwap 机制能够检测
/build/classes/
中的变化,而不管使用的构建工具如何
- 我将
idea
plugin 添加到我的 build.gradle,希望它能解决任何潜在的类路径混淆问题
- 使用内置的 IntelliJ-Compiler 时,热交换按预期工作
所以我把这个 MVCE 放在一起来说明我的问题:
build.gradle:
group 'hotswaptest'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
src/main/java/HotSwappingOrNot.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class HotSwappingOrNot {
public static void main(String[] args) {
JFrame asdf = new JFrame();
asdf.setContentPane(new JLabel("asdf"));
asdf.setVisible(true);
asdf.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
float r = (float) Math.random();
Color c = new Color(r, 1-r, r);
asdf.setBackground(c);
}
});
}
}
为了测试热交换,我将 new Color(r, 1-r, r)
位更改为 new Color(r, r, r)
并按 Ctrl+Shift+F9
。
尚未修复IDEA-163187。
到目前为止,我不知道有任何可用的解决方法:(
对于普通 Java/Swing 应用程序,我目前正在将 ant 构建脚本迁移到 gradle 构建。
虽然我很快 运行 得到它,在 IntelliJ IDEA 中调试 时不再拾取重新编译 类 中的更改。
我所有的 build/run 操作都是 delegated to gradle。
我考虑过的事情:
- 这不是 How to enable hot swapping in debug mode with gradle and jetty? 的副本,我正在使用独立的 Java 应用程序,而不是 Spring
- 同理,https://github.com/thomas-adriano/gradle-hot-swap不适用,我觉得
- 我希望 HotSwap 机制能够检测
/build/classes/
中的变化,而不管使用的构建工具如何 - 我将
idea
plugin 添加到我的 build.gradle,希望它能解决任何潜在的类路径混淆问题 - 使用内置的 IntelliJ-Compiler 时,热交换按预期工作
所以我把这个 MVCE 放在一起来说明我的问题:
build.gradle:
group 'hotswaptest'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
src/main/java/HotSwappingOrNot.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class HotSwappingOrNot {
public static void main(String[] args) {
JFrame asdf = new JFrame();
asdf.setContentPane(new JLabel("asdf"));
asdf.setVisible(true);
asdf.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
float r = (float) Math.random();
Color c = new Color(r, 1-r, r);
asdf.setBackground(c);
}
});
}
}
为了测试热交换,我将 new Color(r, 1-r, r)
位更改为 new Color(r, r, r)
并按 Ctrl+Shift+F9
。
尚未修复IDEA-163187。 到目前为止,我不知道有任何可用的解决方法:(