I created an eclipse plugin that hooks into the save action to create a miniature javascript file with the goolge close compiler. See Files below. This worked before the eclipse 3.7.2. Unfortunately, now in eclipse 4.2.1 it seems like this sometimes creates an endless loop. The job "compile.min.js" (line 64 in ResourceChangedListener.java) seems to be the reason. This causes the workpaced to start building again and again. I assume that this is due to the fact that this task creates or modifies a file that starts assembling the workspace again, which again starts a task that starts assembling, and so on. But I canβt figure out how to prevent this.
//Activator.java
package closure_compiler_save; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; public class Activator extends AbstractUIPlugin {
//ResourceChangedListener.java
package closure_compiler_save; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; public class ResourceChangedListener implements IResourceChangeListener { public void resourceChanged(IResourceChangeEvent event) { if (event.getType() != IResourceChangeEvent.POST_CHANGE) return; IResourceDelta delta = event.getDelta(); try { processDelta(delta); } catch (CoreException e) { e.printStackTrace(); } }
source share