On Mon, 2004-03-29 at 03:18, Emmanuel Venisse wrote: > Can you set optional the sources downloading?
It's an entirely separate process, don't couple it to artifact downloading in general. > 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] -- jvz. Jason van Zyl [EMAIL PROTECTED] http://maven.apache.org happiness is like a butterfly: the more you chase it, the more it will elude you, but if you turn your attention to other things, it will come and sit softly on your shoulder ... -- Thoreau --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
