
com.dev9.mvnwatcher.MvnRunner Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of watcher-maven-plugin Show documentation
Show all versions of watcher-maven-plugin Show documentation
Maven Plugin to watch file system changes and automatically restart builds
The newest version!
package com.dev9.mvnwatcher;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* Responsible for managing the lifecycle of the MvnMonitor.
*
* @see MvnMonitor
*/
public class MvnRunner {
Path projectPath;
Path targetDirectory;
public MvnRunner(Path projectPath, Path targetDirectory, List tasks) {
this.projectPath = Objects.requireNonNull(projectPath);
this.targetDirectory = Objects.requireNonNull(targetDirectory);
this.tasks = Objects.requireNonNull(tasks);
}
private MvnMonitor monitor;
private List tasks;
public boolean running() {
return !monitor.shutdown;
}
public String status() {
return monitor.status();
}
public void start() {
List configs = new ArrayList<>();
for (Task task : tasks) {
ProcessBuilder pb = task.toProcessBuilder();
configs.add(pb);
}
monitor = new MvnMonitor(configs);
new Thread(monitor, "mvnmonitor").start();
Thread reaper = new Thread(new MvnTerminate(monitor), "mvnmonitor-reaper");
Runtime.getRuntime().addShutdownHook(reaper);
}
public void changeEvent() {
monitor.dirty = true;
}
public void stop() {
monitor.shutdown = true;
}
private class MvnTerminate implements Runnable {
private MvnMonitor monitor;
MvnTerminate(MvnMonitor monitor) {
this.monitor = monitor;
}
@Override
public void run() {
monitor.kill();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy