作者:mobiledu2502855777 | 来源:互联网 | 2023-01-06 17:12
对于纯Java / Swing应用程序,我目前正在将ant buildscript迁移到gradle build。
当我启动并快速运行它时,在IntelliJ IDEA中进行调试时不再需要重新编译的类中进行更改。
我所有的构建/运行操作都委托给gradle。
我考虑过的事情:
这与如何在gradle和jetty的调试模式下启用热交换不是重复的?,我正在使用独立的Java应用程序,而不是Spring
出于同样的原因,我认为https://github.com/thomas-adriano/gradle-hot-swap不适用
我希望/build/classes/
无论使用哪种构建工具,HotSwap机制都能检测到变化
我将idea
插件添加到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)
-bit 更改为new Color(r, r, r)
,然后按Ctrl+Shift+F9
。