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
andYour 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
attachementreduce 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
as
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
---------------------------------------------------------------------------"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.
dependency-
2004----
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
200422:36:39 -0000 1.22.4.4
+++ src/java/org/apache/maven/repository/AbstractArtifact.java 29 Mar
dependency07:39:20 -0000
@@ -48,7 +48,10 @@artifactPath.substring(dot);
/** 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" +
22:36:39 -0000 1.18.10.2+ } + 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
+++ src/java/org/apache/maven/repository/Artifact.java 29 Mar 200407:39:20 -0000
@@ -68,6 +68,14 @@ * @return The generated path of the artifact based on the
attributes.
*/
String generatePath();
+
+ /**
+ * Generate the path for the sources artifact given its
theattributes.
+ *
+ * @return The generated path of the artifact sources based on
inlocaldependency
agnostic.+ * 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
+ * + * @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
repository.
*/
boolean exists();
+
+ /**
+ * Boolean flag indicating whether this artifact has sources.
+ *
+ * @return Flag indicating the existance of the artifact sources
ifsystem.the local
downloaded into+ * repository. + */ + boolean hasSources(); + + /** + * Indicates the sources for this artifact have been found and
+ * 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
2004system.+ * + * @return The location of the artifact sources in the local file
+ */ + 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
200405:56:21 -0000 1.34.4.5
+++ src/java/org/apache/maven/verifier/DependencyVerifier.java 29 Mar
remoteRepo);07:39:20 -0000
@@ -296,20 +296,7 @@"https://" );
// 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:/",
"http://" );- } - else - { - url = StringUtils.replace( url, "http:/",
- } - } + String url = getUrlInRepo(artifact.getUrlPath(),
// Attempt to retrieve the artifact and set the checksum
"]:retrieval
// of the checksum file was successful.
@@ -361,9 +348,57 @@
// FIXME: localize this message
log.warn("Error retrieving artifact from [" + url +
e);"
+ e);
remoteRepo);} + + // If found, search for the artifact sources + try { + + String sourcesUrl = + getUrlInRepo(artifact.getSourcesUrlPath(),
getProject().getContext().getProxyHost(),+ log.debug( "Getting URL: " + sourcesUrl ); + HttpUtils.getFile( sourcesUrl, + artifact.getSourceFile(), + ignoreErrors, + useTimestamp, +
+getProject().getContext().getProxyPort(),
+getProject().getContext().getProxyUserName(),
+getProject().getContext().getProxyPassword(),
+ true );
+ artifact.setSourcesFound();
+ }
+ catch (Exception e)
+ {
+ log.debug("No sources for artifact in this repos",
"http://" );"https://" );+ } }
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:/",
+ }
+ else
+ {
+ url = StringUtils.replace( url, "http:/",
// ----------------------------------------------------------------------+ } + } + return url; }
-
--------------------------------------------------------------------------
path="MAVEN_REPO${lib.urlPath}"-
----
18:04:37 -0000 1.9Index: 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
+++ eclipse/src/plugin-resources/templates/classpath.jelly 29 Mar 200407:40:22 -0000
value="${lib.dependency.isAddedToClasspath()}"/>@@ -114,7 +114,14 @@ <!-- make sure it's a classpath dependency --> <j:set var="isClasspath"
<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"
--------------------------------------------------------------------------+ </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]
