You're right. Sorry of being a developper without enought maven multiples usages visibility ;)

Do you know a *stable* library to convert a tar.bz2 stream ? I looked at commons-compress in sandwox, but what to think about such warning : " Methods and classes can and will appear and disappear without warning " ?

Nico.

Emmanuel Venisse a �crit :

maven.dependency.sources=false should be the default value.
Only developers are interest by sources for debugging.

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





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]






---------------------------------------------------------------------
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