Your right, I didn't thin kabout this (having a 56k modem at home I should do !)

I' suggest to use an optional "maven.dependency.sources=false" to disable source download

Nico.


Emmanuel Venisse a �crit :


OK for the failure, but a users doesn't always want to download sources and
reduce his bandwidth.

Emmanuel

----- Original Message ----- From: "nicolas De Loof" <[EMAIL PROTECTED]>
To: "Maven Developers List" <[EMAIL PROTECTED]>
Sent: Monday, March 29, 2004 11:00 AM
Subject: Re: Enhancement with patch avaible : artifact source attachement





A "source" failed download doesn't generate a build failed. Sources are
"implicit" optionnal

Nico.

Emmanuel Venisse a �crit :



Can you set optional the sources downloading?

Emmanuel

----- Original Message ----- From: "nicolas De Loof" <[EMAIL PROTECTED]>
Cc: "Maven Developers List" <[EMAIL PROTECTED]>
Sent: Monday, March 29, 2004 9:52 AM
Subject: Re: Enhancement with patch avaible : artifact source attachement







Sorry, I forget to attach the patch files

nicolas De Loof a �crit :





Hello,

I've added a tiny enhancement to maven 1.0 RC2 :

When downloading some artifact from remote repo(s), my patched maven
tries to download the artifact sources. It is usefull on eclipse to
get generated classpath with associated sources -> inheritence with
parameters and javadoc, browse sources, debug ...
(I patched eclispe generate-classpath goal to do this).

The artifact sources for any artifact named "XXXXX.ext" is searched as
"XXXXX-src.ext"

You can test it by applying the patch or by downloading the patched
"maven.jar" and eclipse plugin "classpath.jelly" from
http://ndeloof.free.fr/maven.

I setted a test sources repository on
http://ndeloof.free.fr/maven/srcrepository. Naturally, if this patch
is accepted, such artifact sources should go on ibiblio.

Building the artifact sources for a mavenized project could be added
as enhancement of the jar plugin or use a simpel maven.xml postGoal.








---------------------------------------------------------------------------


-


----






Index: src/java/org/apache/maven/repository/AbstractArtifact.java
===================================================================
retrieving revision 1.22.4.4
diff -u -r1.22.4.4 AbstractArtifact.java
--- src/java/org/apache/maven/repository/AbstractArtifact.java 1 Mar


2004




22:36:39 -0000 1.22.4.4




+++ src/java/org/apache/maven/repository/AbstractArtifact.java 29 Mar


2004




07:39:20 -0000




@@ -48,7 +48,10 @@

   /** Path to artifact. */
   private String path;
-
+
+    /** flag to indicate sources are present in repository */
+    private boolean hasSources = false;
+
   /**
    * Default constructor.
    * @param dependency the dependency the artifact is based on
@@ -58,6 +61,11 @@
       this.dependency = dependency;
   }

+    /** @see Artifact#setSourcesFound */
+    public void setSourcesFound() {
+       this.hasSources = true;
+    }
+
   /** @see Artifact#setDependency */
   public void setDependency( Dependency dependency )
   {
@@ -102,6 +110,31 @@
            + "/" + getDependency().getType() + "s"
            + "/" + getDependency().getArtifact();
   }
+
+    /** @see Artifact#generateSourcesPath */
+    public String generateSourcesPath()
+    {
+        String artifactPath = getPath();
+        int dot = artifactPath.lastIndexOf(".");
+        if (dot > 0)
+        {
+            return artifactPath.substring(0, dot) + "-src" +




artifactPath.substring(dot);




+        }
+        return "";
+    }
+
+    /** @see Artifact#getSourcesUrlPath */
+    public String getSourcesUrlPath()
+    {
+        String artifactPath = getUrlPath();
+        int dot = artifactPath.lastIndexOf(".");
+        if (dot > 0)
+        {
+            return artifactPath.substring(0, dot) + "-src" +




artifactPath.substring(dot);




+        }
+        return "";
+    }
+

   /** @see Artifact#getChecksumUrl */
   public String getChecksumUrl()
@@ -125,7 +158,11 @@
   /** @see Artifact#exists */
   public boolean exists()
   {
-        return getFile().exists();
+        boolean exist = getFile().exists();
+        if (exist && getSourceFile().exists()) {
+            setSourcesFound();
+        }
+        return exist;
   }

   /** @see Artifact#isSnapshot */
@@ -140,6 +177,17 @@
       return new File( getPath() );
   }

+    /** @see Artifact#getSourceFile */
+    public File getSourceFile()
+    {
+        return new File( generateSourcesPath() );
+    }
+
+    /** @see Artifact#hasSources */
+    public boolean hasSources() {
+        return this.hasSources;
+    }
+
   /**
    * C H E C K S U M  V E R I F I C A T I O N
    * @throws ChecksumVerificationException when the checksum differs
Index: src/java/org/apache/maven/repository/Artifact.java
===================================================================
retrieving revision 1.18.10.2
diff -u -r1.18.10.2 Artifact.java
--- src/java/org/apache/maven/repository/Artifact.java 1 Mar 2004




22:36:39 -0000 1.18.10.2




+++ src/java/org/apache/maven/repository/Artifact.java 29 Mar 2004




07:39:20 -0000




@@ -68,6 +68,14 @@
* @return The generated path of the artifact based on the


dependency




attributes.




    */
   String generatePath();
+
+    /**
+     * Generate the path for the sources artifact given its dependency




attributes.




+     *
+     * @return The generated path of the artifact sources based on the




dependency




+     *         attributes.
+     */
+    String generateSourcesPath();

   /**
    * Return an URL path that is platform agnostic.
@@ -77,6 +85,13 @@
   String getUrlPath();

   /**
+     * Return an URL path to the artifact sources that is platform




agnostic.




+ *
+ * @return URL of the artifact sources.
+ */
+ String getSourcesUrlPath();
+
+ /**
* Return the url to the checksum file for this artifact.
*
* @return URL of the checksum file for this artifact.
@@ -103,6 +118,20 @@
* @return Flag indicating the existance of the artifact in the


local




repository.




    */
   boolean exists();
+
+    /**
+     * Boolean flag indicating whether this artifact has sources.
+     *
+     * @return Flag indicating the existance of the artifact sources in




the local




+     *         repository.
+     */
+    boolean hasSources();
+
+    /**
+     * Indicates the sources for this artifact have been found and




downloaded into




+     * local repository.
+     */
+    void setSourcesFound();

/**
* Get the location of the artifact in the local file system.
@@ -110,6 +139,13 @@
* @return The location of the artifact in the local file system.
*/
File getFile();
+
+ /**
+ * Get the location of the artifact sources in the local file


system.


+     *
+     * @return The location of the artifact sources in the local file




system.




+     */
+    File getSourceFile();

/**
* Verify the artifact.
Index: src/java/org/apache/maven/verifier/DependencyVerifier.java
===================================================================
retrieving revision 1.34.4.5
diff -u -r1.34.4.5 DependencyVerifier.java
--- src/java/org/apache/maven/verifier/DependencyVerifier.java 18 Mar


2004




05:56:21 -0000 1.34.4.5




+++ src/java/org/apache/maven/verifier/DependencyVerifier.java 29 Mar


2004




07:39:20 -0000




@@ -296,20 +296,7 @@

           // The username and password parameters are not being
           // used here. Those are the "" parameters you see below.
-            String url = remoteRepo + "/" + artifact.getUrlPath();
-            url = StringUtils.replace( url, "//", "/" );
-
-            if ( !url.startsWith( "file" ) )
-            {
-                if ( url.startsWith( "https" ) )
-                {
-                    url = StringUtils.replace( url, "https:/",




"https://"; );




-                }
-                else
-                {
-                    url = StringUtils.replace( url, "http:/",




"http://"; );




- }
- }
+ String url = getUrlInRepo(artifact.getUrlPath(),


remoteRepo);


// Attempt to retrieve the artifact and set the checksum if




retrieval




// of the checksum file was successful.
@@ -361,9 +348,57 @@
// FIXME: localize this message
log.warn("Error retrieving artifact from [" + url + "]:


"




+ e);




           }
+
+            // If found, search for the artifact sources
+            try {
+
+                String sourcesUrl =
+                    getUrlInRepo(artifact.getSourcesUrlPath(),




remoteRepo);




+                log.debug( "Getting URL: " + sourcesUrl );
+                HttpUtils.getFile( sourcesUrl,
+                                   artifact.getSourceFile(),
+                                   ignoreErrors,
+                                   useTimestamp,
+




getProject().getContext().getProxyHost(),




+




getProject().getContext().getProxyPort(),




+




getProject().getContext().getProxyUserName(),




+




getProject().getContext().getProxyPassword(),




+                                   true );
+                artifact.setSourcesFound();
+            }
+            catch (Exception e)
+            {
+                log.debug("No sources for artifact in this repos", e);
+            }
       }

return artifactFound;
+ }
+
+ /**
+ * Convert the urlPath to URL for file in selected repository.
+ *
+ * @param urlPath path to convert
+ * @param remoteRepo selected repository
+ * @return url in repository
+ */
+ private String getUrlInRepo(String urlPath, String remoteRepo)
+ {
+ String url = remoteRepo + "/" + urlPath;
+ url = StringUtils.replace( url, "//", "/" );
+
+ if ( !url.startsWith( "file" ) )
+ {
+ if ( url.startsWith( "https" ) )
+ {
+ url = StringUtils.replace( url, "https:/",


"https://"; );


+            }
+            else
+            {
+                url = StringUtils.replace( url, "http:/", "http://"; );
+            }
+        }
+        return url;
   }









// ----------------------------------------------------------------------






---------------------------------------------------------------------------


-


----






Index: eclipse/src/plugin-resources/templates/classpath.jelly
===================================================================
retrieving revision 1.9
diff -u -r1.9 classpath.jelly
--- eclipse/src/plugin-resources/templates/classpath.jelly 4 Mar 2004




18:04:37 -0000 1.9




+++ eclipse/src/plugin-resources/templates/classpath.jelly 29 Mar 2004




07:40:22 -0000




@@ -114,7 +114,14 @@
         <!-- make sure it's a classpath dependency -->
         <j:set var="isClasspath"




value="${lib.dependency.isAddedToClasspath()}"/>




         <j:if test="${isClasspath}">
+          <j:choose>
+          <j:when test="${lib.hasSources()}">
+            <classpathentry kind="var" path="MAVEN_REPO${lib.urlPath}"




sourcepath="MAVEN_REPO${lib.urlSourcePath}"/>




+ </j:when>
+ <j:otherwise>
<classpathentry kind="var"


path="MAVEN_REPO${lib.urlPath}"/>


+ </j:otherwise>
+       </j:choose>
         </j:if>
       </j:otherwise>
     </j:choose>








---------------------------------------------------------------------------


-


----






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




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





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






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




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



Reply via email to