[112363] Publishing problems
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/PublishOperation2.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/PublishOperation2.java
index 70e9429..16f1aed 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/PublishOperation2.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/PublishOperation2.java
@@ -81,6 +81,17 @@
 	}
 
 	private void publishJar(IProgressMonitor monitor) throws CoreException {
+		IPath path = server.getTempDirectory().append("webapps");
+		path = path.append(module[0].getName()).append("WEB-INF").append("lib");
+		IPath jarPath = path.append(module[1].getName() + ".jar");
+		
+		if (kind == IServer.PUBLISH_CLEAN || deltaKind == ServerBehaviourDelegate.REMOVED) { // clean and republish from scratch
+			if (jarPath.toFile().exists())
+				jarPath.toFile().delete();
+			
+			if (deltaKind == ServerBehaviourDelegate.REMOVED)
+				return;
+		}
 		if (kind != IServer.PUBLISH_CLEAN && kind != IServer.PUBLISH_FULL) {
 			// avoid changes if no changes to module since last publish
 			IModuleResourceDelta[] delta = server.getPublishedResourceDelta(module);
@@ -89,13 +100,12 @@
 		}
 		
 		// make directory if it doesn't exist
-		IPath path = server.getTempDirectory().append("webapps");
-		path = path.append(module[0].getName()).append("WEB-INF").append("lib");
+		
 		if (!path.toFile().exists())
 			path.toFile().mkdirs();
 		
 		ProjectModule pm = (ProjectModule) module[1].loadAdapter(ProjectModule.class, monitor);
 		IModuleResource[] mr = pm.members();
-		PublishUtil.createZipFile(mr, path.append(module[1].getName() + ".jar"));
+		PublishUtil.createZipFile(mr, jarPath);
 	}
 }
\ No newline at end of file