diff --git a/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java b/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java index 9112b6ed86..eb0e82d668 100644 --- a/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java +++ b/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java @@ -364,10 +364,11 @@ else if ( targetPom.exists() ) private void mergeMetadata( Metadata sourceMetadata, File target, boolean reportOnly ) throws IOException, DigestException, XmlPullParserException, NoSuchAlgorithmException { + boolean changed = false; + Metadata targetMetadata = null; + if ( target.exists() ) { - Metadata targetMetadata = null; - Reader reader = null; try @@ -383,33 +384,37 @@ private void mergeMetadata( Metadata sourceMetadata, File target, boolean report IOUtil.close( reader ); } - boolean changed = targetMetadata.merge( sourceMetadata ); - - if ( changed ) + changed = targetMetadata.merge( sourceMetadata ); + } + else + { + changed = true; + targetMetadata = sourceMetadata; + } + if ( changed ) + { + Writer writer = null; + try { - Writer writer = null; - try + target.getParentFile().mkdirs(); + writer = new FileWriter( target ); + + MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer(); + + mappingWriter.write( writer, targetMetadata ); + + if ( !reportOnly ) { - target.getParentFile().mkdirs(); - writer = new FileWriter( target ); - - MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer(); - - mappingWriter.write( writer, targetMetadata ); - - if ( !reportOnly ) - { - File digestFile = artifactDigestor.getDigestFile( target, Digestor.MD5 ); - artifactDigestor.createArtifactDigest( target, digestFile, Digestor.MD5 ); - digestFile = artifactDigestor.getDigestFile( target, Digestor.SHA ); - artifactDigestor.createArtifactDigest( target, digestFile, Digestor.SHA ); - } - } - finally - { - IOUtil.close( writer ); + File digestFile = artifactDigestor.getDigestFile( target, Digestor.MD5 ); + artifactDigestor.createArtifactDigest( target, digestFile, Digestor.MD5 ); + digestFile = artifactDigestor.getDigestFile( target, Digestor.SHA ); + artifactDigestor.createArtifactDigest( target, digestFile, Digestor.SHA ); } } + finally + { + IOUtil.close( writer ); + } } }