Gradle + IntelliJ:普通 Java 应用程序中的 HotSwap

Gradle + IntelliJ: HotSwap in a plain Java application

对于普通 Java/Swing 应用程序,我目前正在将 ant 构建脚本迁移到 gradle 构建。

虽然我很快 运行 得到它,在 IntelliJ IDEA 中调试 时不再拾取重新编译 类 中的更改。

我所有的 build/run 操作都是 delegated to gradle

我考虑过的事情:

所以我把这个 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。 到目前为止,我不知道有任何可用的解决方法:(