package com.github.alexvictoor.proxy; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Echos an object string to the output screen. * @goal run * @requiresProject false */ public class ProxyMojo extends AbstractMojo { private static final Logger logger = LoggerFactory.getLogger(ProxyMojo.class); /** * @parameter */ private String[] routes; /** * @parameter default-value="localhost" */ private String targetHost; /** * @parameter default-value="8080" */ private int targetPort; /** * @parameter default-value="8081" */ private int proxyPort; /** * @parameter default-value=true */ private boolean livereload; @Override public void execute() throws MojoExecutionException, MojoFailureException { List<FileSystemRoute> fsRoutes = new ArrayList<>(); if (routes != null) { for (String route : routes) { fsRoutes.add(FileSystemRoute.parse(route)); } } HttpProxyServer proxyServer = new HttpProxyServer(targetHost, targetPort, proxyPort, fsRoutes); proxyServer.start(); List<File> watchedFolders = new ArrayList<>(); for (FileSystemRoute route : fsRoutes) { watchedFolders.add(route.directory); } LivereloadServer livereloadServer = null; if (livereload && !watchedFolders.isEmpty()) { livereloadServer = new LivereloadServer(watchedFolders); livereloadServer.start(); } logger.info("Press a key to shutdown server"); try { System.in.read(); } catch (IOException e) { proxyServer.stop(); if (livereloadServer != null) { livereloadServer.stop(); } } } }