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]
