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]

Reply via email to