Index: src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
===================================================================
--- src/test/java/org/apache/maven/archiver/MavenArchiverTest.java	(Revision 513537)
+++ src/test/java/org/apache/maven/archiver/MavenArchiverTest.java	(Arbeitskopie)
@@ -19,8 +19,10 @@
 import junit.framework.TestCase;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.jar.JarArchiver;
 import org.codehaus.plexus.archiver.jar.Manifest;
 
 import java.io.File;
@@ -174,4 +176,52 @@
 
     }
 
+    public void testRecreation()
+            throws Exception
+    {
+        File jarFile = new File( "target/test/dummy.jar" );
+        JarArchiver jarArchiver = new JarArchiver();
+        jarArchiver.setDestFile( jarFile );
+
+        MavenArchiver archiver = new MavenArchiver();
+        archiver.setArchiver( jarArchiver );
+        archiver.setOutputFile( jarArchiver.getDestFile() );
+
+        Model model = new Model();
+        model.setGroupId( "org.apache.dummy" );
+        model.setArtifactId( "dummy" );
+        model.setVersion( "0.1" );
+        MavenProject project = new MavenProject( model );
+
+        project.setArtifacts( Collections.EMPTY_SET );
+        project.setPluginArtifacts( Collections.EMPTY_SET );
+        project.setReportArtifacts( Collections.EMPTY_SET );
+        project.setExtensionArtifacts( Collections.EMPTY_SET );
+        project.setRemoteArtifactRepositories( Collections.EMPTY_LIST );
+        project.setPluginArtifactRepositories( Collections.EMPTY_LIST );
+        project.setFile( new File( "pom.xml" ) );
+        Build build = new Build();
+        build.setDirectory( "target" );
+        project.setBuild( build );
+
+        MockArtifact artifact = new MockArtifact();
+        artifact.setGroupId( "org.apache.dummy" );
+        artifact.setArtifactId( "dummy" );
+        artifact.setVersion( "0.1" );
+        artifact.setType( "jar" );
+        project.setArtifact( artifact );
+
+        MavenArchiveConfiguration config = new MavenArchiveConfiguration();
+        config.setForced( false );
+        
+        archiver.createArchive( project, config );
+        long timeStamp = jarFile.lastModified();
+        Thread.sleep( 1 ); // Make sure, that System.currentTimeMillis() is different from timeStamp
+        archiver.createArchive( project,config );
+        assertEquals( timeStamp, jarFile.lastModified() );
+
+        config.setForced( true );
+        archiver.createArchive( project, config );
+        assertTrue( jarFile.lastModified() > timeStamp );
+    }
 }
Index: src/main/java/org/apache/maven/archiver/MavenArchiver.java
===================================================================
--- src/main/java/org/apache/maven/archiver/MavenArchiver.java	(Revision 513537)
+++ src/main/java/org/apache/maven/archiver/MavenArchiver.java	(Arbeitskopie)
@@ -25,14 +25,11 @@
 import org.codehaus.plexus.archiver.jar.ManifestException;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 
 /**
@@ -45,6 +42,8 @@
 
     private File archiveFile;
 
+    private File workDir;
+
     /**
      * Return a pre-configured manifest
      *
@@ -276,6 +275,11 @@
         archiveFile = outputFile;
     }
 
+    public void setWorkDir( File workDir )
+    {
+        this.workDir = workDir;
+    }
+
     public void createArchive( MavenProject project, MavenArchiveConfiguration archiveConfiguration )
         throws ArchiverException, ManifestException, IOException, DependencyResolutionRequiredException
     {
@@ -283,8 +287,7 @@
         // without impacting the main project instance...
         MavenProject workingProject = new MavenProject( project );
 
-        File pomPropertiesFile = new File( workingProject.getFile().getParentFile(), "pom.properties" );
-
+        boolean forced = archiveConfiguration.isForced();
         if ( archiveConfiguration.isAddMavenDescriptor() )
         {
             // ----------------------------------------------------------------------
@@ -313,21 +316,7 @@
             // Create pom.properties file
             // ----------------------------------------------------------------------
 
-            Properties p = new Properties();
-
-            p.setProperty( "groupId", workingProject.getGroupId() );
-
-            p.setProperty( "artifactId", workingProject.getArtifactId() );
-
-            p.setProperty( "version", workingProject.getVersion() );
-
-            OutputStream os = new FileOutputStream( pomPropertiesFile );
-
-            p.store( os, "Generated by Maven" );
-
-            os.close(); // stream is flushed but not closed by Properties.store()
-
-            archiver.addFile( pomPropertiesFile, "META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties" );
+            new PomPropertiesManager().createPomProperties( workingProject, archiver, workDir, forced );
         }
 
         // ----------------------------------------------------------------------
@@ -390,7 +379,6 @@
             }
         }
 
-        boolean forced = archiveConfiguration.isForced();
         archiver.setForced( forced );
         if ( !archiveConfiguration.isForced()  &&  archiver.isSupportingForced() )
         {
@@ -400,11 +388,5 @@
 
         // create archive
         archiver.createArchive();
-
-        // Cleanup
-        if ( archiveConfiguration.isAddMavenDescriptor() )
-        {
-            pomPropertiesFile.delete();
-        }
     }
 }
