diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
index 317d85a..a92a22c 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
@@ -38,6 +38,7 @@
 import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
 import org.eclipse.jdt.launching.IVMInstall;
 import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jst.server.core.IEnterpriseApplication;
 import org.eclipse.jst.server.core.IWebModule;
 import org.eclipse.jst.server.generic.core.internal.CorePlugin;
 import org.eclipse.jst.server.generic.core.internal.GenericPublisher;
@@ -50,6 +51,7 @@
 import org.eclipse.jst.server.generic.servertype.definition.PublisherData;
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IModuleArtifact;
+import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
 import org.osgi.framework.Bundle;
 
@@ -118,10 +120,11 @@
 	 *      org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	public IStatus[] publish(IModuleArtifact[] resource, IProgressMonitor monitor) {
-		if (getModule().length > 1)// only respond to root module calls.
-			return null;
-		try {
-			if (monitor.isCanceled()) return null;		
+		
+		if (getModule().length > 1 || // only respond to root module calls.
+				!publishNeeded() ||
+				monitor.isCanceled()) return null; 	
+		try {	
 			assembleModule(monitor);
 			File file = getCustomBuildFile();
 			if ( file == null){// no user selected build file use the adapter default.
@@ -135,6 +138,28 @@
 		}
 		return null;
 	}
+	/**
+	 * Checks if the Ant publisher actually needs to publish. 
+	 * For ear modules it also checks if any of the children modules requires publishing.
+	 * @return true if ant publisher needs to publish.
+	 */
+	private boolean publishNeeded() {
+		if ( getKind() != IServer.PUBLISH_INCREMENTAL && getKind() != IServer.PUBLISH_AUTO )
+			return true;
+		if (getDeltaKind() != ServerBehaviourDelegate.NO_CHANGE )
+			return true;
+		if ( isModuleType(getModule()[0], "jst.ear") ){ //$NON-NLS-1$
+			IEnterpriseApplication earModule = (IEnterpriseApplication)getModule()[0].loadAdapter(IEnterpriseApplication.class, new NullProgressMonitor());
+			IModule[] childModules = earModule.getModules();
+			for (int i = 0; i < childModules.length; i++) {
+				IModule module = childModules[i];
+			    IModule[] modules ={getModule()[0], module};
+			    if (IServer.PUBLISH_STATE_NONE != this.getServer().getServer().getModulePublishState(modules))
+			    	return true;
+			}
+		}
+		return false;	
+	}
 
 	protected void assembleModule(IProgressMonitor monitor) throws CoreException {
 		long time = System.currentTimeMillis();
