@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { DeploymentUnit unit = phaseContext.getDeploymentUnit(); ApplicationMetaData appMetaData = unit.getAttachment( ApplicationMetaData.ATTACHMENT_KEY ); if (appMetaData == null) { return; } ResourceRoot resourceRoot = unit.getAttachment( Attachments.DEPLOYMENT_ROOT ); VirtualFile root = resourceRoot.getRoot(); try { VirtualFile explodedRoot = getExplodedApplication( root ); if (!root.equals( explodedRoot )) { appMetaData.explode( explodedRoot.getPhysicalFile() ); } } catch (IOException e) { throw new DeploymentUnitProcessingException( e ); } }