If I may be a nuisance... :) I think the delete should be in a finally block so it doesn't get skipped for exceptions (which I think retrieveAvailableVersions can throw from memory). I'm just particularly watchful of these guys - I've seen Maven fill up /tmp pretty fast recently :)

Also, could the discarded exception be logged at debug level to help diagnosis?

Thanks!

On 06/11/2007, at 9:33 PM, [EMAIL PROTECTED] wrote:

Author: jvanzyl
Date: Tue Nov  6 02:33:31 2007
New Revision: 592366

URL: http://svn.apache.org/viewvc?rev=592366&view=rev
Log:
o slightly better local repository fake out

Modified:
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/ deployer/DefaultArtifactDeployer.java

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/ artifact/deployer/DefaultArtifactDeployer.java URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/ java/org/apache/maven/artifact/deployer/ DefaultArtifactDeployer.java?rev=592366&r1=592365&r2=592366&view=diff ====================================================================== ======== --- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/ deployer/DefaultArtifactDeployer.java (original) +++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/ deployer/DefaultArtifactDeployer.java Tue Nov 6 02:33:31 2007
@@ -125,26 +125,11 @@
         }
     }

-    private static int i;
-
private boolean artifactHasBeenDeployed( Artifact artifact, ArtifactRepository remoteRepository )
         throws ArtifactDeploymentException
     {
         try
         {
- // We have to fake out the tools underneath as they always expect a local repository. - // This makes sure that we are checking for remote deployments not things cached locally - // as we don't care about things cached locally. In an embedded environment we have to - // deal with multiple deployments, and the same deployment by the same project so we - // just need to make sure we have a detached local repository each time as not to
-            // get contaminated results.
-
- File detachedLocalRepository = new File ( System.getProperty( "java.io.tmpdir" ), "repo" + i++ );
-
- ArtifactRepository localRepository = new DefaultArtifactRepository( "id", "file://" + detachedLocalRepository, defaultLayout );
-
-            detachedLocalRepository.deleteOnExit();
-
// We will just let people deploy snapshots over and over again even if they want
             // to deploy something different with the same name.

@@ -167,9 +152,22 @@

ArtifactVersion artifactVersion = new DefaultArtifactVersion( artifact.getVersion() );

+ // We have to fake out the tools underneath as they always expect a local repository. + // This makes sure that we are checking for remote deployments not things cached locally + // as we don't care about things cached locally. In an embedded environment we have to + // deal with multiple deployments, and the same deployment by the same project so we + // just need to make sure we have a detached local repository each time as not to
+            // get contaminated results.
+
+ File detachedLocalRepository = File.createTempFile ( "maven", "repo" );
+
+ ArtifactRepository localRepository = new DefaultArtifactRepository( "id", "file://" + detachedLocalRepository, defaultLayout );
+
List versions = metadataSource.retrieveAvailableVersions( artifact, localRepository, Arrays.asList( new ArtifactRepository[] {remoteRepository} ) );

+            detachedLocalRepository.delete();
+
             for ( Iterator i = versions.iterator(); i.hasNext(); )
             {
ArtifactVersion deployedArtifactVersion = (ArtifactVersion) i.next();
@@ -181,6 +179,12 @@
                     return true;
                 }
             }
+        }
+        catch ( IOException e )
+        {
+ getLogger().warn( "We cannot retrieve the artifact metadata, or it does not exist. We will assume this artifact needs to be deployed." );
+
+            return false;
         }
         catch ( ArtifactMetadataRetrievalException e )
         {



--
Brett Porter - [EMAIL PROTECTED]
Blog: http://www.devzuz.org/blogs/bporter/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to