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.
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
localattributes.
attributes.*/ String generatePath(); + + /** + * Generate the path for the sources artifact given its dependency
dependency+ * + * @return The generated path of the artifact sources based on the
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
system.repository.
the local*/ boolean exists(); + + /** + * Boolean flag indicating whether this artifact has sources. + * + * @return Flag indicating the existance of the artifact sources in
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 ifretrieval
// of the checksum file was successful.
@@ -361,9 +348,57 @@
// FIXME: localize this message
log.warn("Error retrieving artifact from [" + url + "]:
"https://" );+ 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", 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:/",
// ----------------------------------------------------------------------+ } + else + { + url = StringUtils.replace( url, "http:/", "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"
sourcepath="MAVEN_REPO${lib.urlSourcePath}"/><j:if test="${isClasspath}"> + <j:choose> + <j:when test="${lib.hasSources()}"> + <classpathentry kind="var" path="MAVEN_REPO${lib.urlPath}"
+ </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]
