maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject cvs commit: maven/xdocs/start download.xml release-notes-LATEST.xml
Date Tue, 07 Dec 2004 13:18:44 GMT
brett       2004/12/07 05:18:44

  Modified:    .        maven.xml plugin-profile.xml project.properties
                        project.xml
               src/java/org/apache/maven ArtifactListBuilder.java
                        MavenUtils.java
               src/java/org/apache/maven/repository AbstractArtifact.java
               src/java/org/apache/maven/util HttpUtils.java
               src/java/org/apache/maven/verifier DependencyVerifier.java
               src/test/touchstone-build maven.xml
               src/test/touchstone-build/src/reactor-build/inheritence
                        maven.xml project.properties project.xml
               src/test/touchstone-build/src/reactor-build/inheritence/subproject
                        maven.xml project.xml
               src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2
                        maven.xml project.xml
               xdocs    changes.xml
               xdocs/start download.xml release-notes-LATEST.xml
  Log:
  merge changes between MAVEN_1_0_1 and MAVEN_1_0_2
  
  Revision  Changes    Path
  1.109     +23 -32    maven/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/maven/maven.xml,v
  retrieving revision 1.108
  retrieving revision 1.109
  diff -u -r1.108 -r1.109
  --- maven.xml	22 Nov 2004 12:14:08 -0000	1.108
  +++ maven.xml	7 Dec 2004 13:18:42 -0000	1.109
  @@ -34,43 +34,12 @@
       <ant:filter token="pom.currentVersion" value="${pom.currentVersion}" />
     </preGoal>
   
  -  <goal name="maven:init">
  -    <j:choose>
  -      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
  -        <j:set var="maven.bin.script" value="${maven.home}/bin/maven.bat"/>
  -      </j:when>
  -      <j:otherwise>
  -        <j:set var="maven.bin.script" value="${maven.home}/bin/maven"/>
  -      </j:otherwise>
  -    </j:choose>
  -  </goal>
  -  
     <postGoal name="site">
       <ant:mkdir dir="${maven.docs.dest}/xsd" />
       <ant:copy tofile="${maven.docs.dest}/xsd/maven-project-3.0.0.xsd" file="${basedir}/src/xsd/maven-project-3.xsd" />
       <attainGoal name="pdf"/>
     </postGoal>
   
  -  <!-- ================================================================== -->
  -  <!-- T O U C H S T O N E  B U I L D                                     -->
  -  <!-- ================================================================== -->
  -  <!-- This runs as part of the standard runtime testing in Maven. It is  -->
  -  <!-- a build that tries to exercise as many of Maven's features as      -->
  -  <!-- possible.                                                          -->
  -  <!-- ================================================================== -->
  -
  -  <postGoal name="test:test">
  -  
  -    <echo>maven.mode.online = ${maven.mode.online}</echo>
  -  
  -    <j:if test="${maven.mode.online}">
  -      <j:if test="${context.getVariable('maven.touchstone.skip') != 'true'}">
  -        <echo>We are online so the touchstone will be run ... </echo>
  -        <attainGoal name="maven:run-touchstone" />
  -      </j:if>
  -    </j:if>
  -  </postGoal>
  -
     <goal name="maven:run-touchstone">
       <maven:maven
         descriptor="${basedir}/src/test/touchstone-build/project.xml"
  @@ -103,10 +72,13 @@
       name="maven:plugins-test"
       description="Test each Maven plugin">
   
  +    <!-- Exclude broken plugin tests (some only broken inside the reactor -->
  +    <j:set var="excludes" value="${maven.plugins.excludes},dashboard/**,dist/**,ear/**,hibernate/**,pdf/**"/>
  +
       <maven:reactor
         basedir="${maven.plugins.directory}"
         includes="${maven.plugins.includes}"
  -      excludes="${maven.plugins.excludes}"
  +      excludes="${excludes}"
         goals="plugin:test"
         banner="Testing"
         ignoreFailures="false"
  @@ -202,6 +174,25 @@
             todir="${installerDir}/plugins"
         />
       </x:forEach>
  +
  +    <ant:echo>Running touchstone against the new Maven install...</ant:echo>
  +    <j:choose>
  +      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
  +        <j:set var="maven.bin.script" value="${installerDir}/bin/maven.bat"/>
  +      </j:when>
  +      <j:otherwise>
  +        <j:set var="maven.bin.script" value="${installerDir}/bin/maven"/>
  +      </j:otherwise>
  +    </j:choose>
  +    <ant:exec
  +      executable="${maven.bin.script}"
  +      failonerror="true">
  +      <ant:arg value="-Dmaven.home=${installerDir}" />
  +      <ant:arg value="-Dmaven.home.local=${maven.build.dir}/home-local"/>
  +      <ant:arg value="-Dmaven.repo.local=${maven.repo.local}"/>
  +      <ant:arg value="maven:run-touchstone"/>
  +      <ant:arg value="-e"/>
  +    </ant:exec>
   
   <!-- Temporarily disabled - we cannot release this at Apache due to GPL libraries included
       <attainGoal name="maven:build-seed-repo" />
  
  
  
  1.4       +5 -5      maven/plugin-profile.xml
  
  Index: plugin-profile.xml
  ===================================================================
  RCS file: /home/cvs/maven/plugin-profile.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- plugin-profile.xml	11 Nov 2004 10:56:10 -0000	1.3
  +++ plugin-profile.xml	7 Dec 2004 13:18:42 -0000	1.4
  @@ -35,9 +35,9 @@
     </plugin>
     <plugin groupId="maven" artifactId="maven-console-plugin" version="1.1">
     </plugin>
  -  <plugin groupId="maven" artifactId="maven-cruisecontrol-plugin" version="1.5">
  +  <plugin groupId="maven" artifactId="maven-cruisecontrol-plugin" version="1.6">
     </plugin>
  -  <plugin groupId="maven" artifactId="maven-dashboard-plugin" version="1.5">
  +  <plugin groupId="maven" artifactId="maven-dashboard-plugin" version="1.6">
     </plugin>
     <plugin groupId="maven" artifactId="maven-developer-activity-plugin" version="1.5.1">
     </plugin>
  @@ -45,7 +45,7 @@
     </plugin>
     <plugin groupId="maven" artifactId="maven-docbook-plugin" version="1.2">
     </plugin>
  -  <plugin groupId="maven" artifactId="maven-ear-plugin" version="1.5">
  +  <plugin groupId="maven" artifactId="maven-ear-plugin" version="1.6">
     </plugin>
     <plugin groupId="maven" artifactId="maven-eclipse-plugin" version="1.9">
     </plugin>
  @@ -71,7 +71,7 @@
     </plugin>
     <plugin groupId="maven" artifactId="maven-jar-plugin" version="1.6.1">
     </plugin>
  -  <plugin groupId="maven" artifactId="maven-java-plugin" version="1.4">
  +  <plugin groupId="maven" artifactId="maven-java-plugin" version="1.5">
     </plugin>
     <plugin groupId="maven" artifactId="maven-javacc-plugin" version="1.1">
     </plugin>
  @@ -111,7 +111,7 @@
     </plugin>
     <plugin groupId="maven" artifactId="maven-license-plugin" version="1.2">
     </plugin>
  -  <plugin groupId="maven" artifactId="maven-linkcheck-plugin" version="1.3.3">
  +  <plugin groupId="maven" artifactId="maven-linkcheck-plugin" version="1.3.4">
     </plugin>
     <plugin groupId="maven" artifactId="maven-multichanges-plugin" version="1.1">
     </plugin>
  
  
  
  1.69      +1 -1      maven/project.properties
  
  Index: project.properties
  ===================================================================
  RCS file: /home/cvs/maven/project.properties,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- project.properties	1 Dec 2004 12:03:23 -0000	1.68
  +++ project.properties	7 Dec 2004 13:18:43 -0000	1.69
  @@ -23,7 +23,7 @@
   maven.gen.docs = ${maven.build.dir}/generated-xdocs
   
   # We are targetting the 1.3 JVM and above
  -maven.compile.target=1.3
  +#maven.compile.target=1.3
   maven.compile.source=1.3
   
   maven.jar.manifest = manifest.mf
  
  
  
  1.343     +5 -0      maven/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven/project.xml,v
  retrieving revision 1.342
  retrieving revision 1.343
  diff -u -r1.342 -r1.343
  --- project.xml	2 Dec 2004 08:28:54 -0000	1.342
  +++ project.xml	7 Dec 2004 13:18:43 -0000	1.343
  @@ -128,6 +128,11 @@
         <name>1.0.1</name>
         <tag>MAVEN_1_0_1</tag>
       </version>
  +    <version>
  +      <id>1.0.2</id>
  +      <name>1.0.2</name>
  +      <tag>MAVEN_1_0_2</tag>
  +    </version>
     </versions>
     <branches/>
     <mailingLists>
  
  
  
  1.18      +4 -7      maven/src/java/org/apache/maven/ArtifactListBuilder.java
  
  Index: ArtifactListBuilder.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/ArtifactListBuilder.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ArtifactListBuilder.java	11 Nov 2004 10:56:09 -0000	1.17
  +++ ArtifactListBuilder.java	7 Dec 2004 13:18:43 -0000	1.18
  @@ -29,10 +29,7 @@
   import java.util.List;
   
   /**
  - *
    * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
  - *
  - * @version $Id$
    */
   public class ArtifactListBuilder
   {
  @@ -47,23 +44,23 @@
        * @param project MavenSession project.
        * @return the list of artifacts for a project
        */
  -    public static List build( final Project project  )
  +    public static List build( final Project project )
       {
           List projectArtifacts = new ArrayList();
           boolean mavenJarOverride = project.getContext().getMavenJarOverride().booleanValue();
   
  -        for ( Iterator i = project.getDependencies().iterator(); i.hasNext();)
  +        for ( Iterator i = project.getDependencies().iterator(); i.hasNext(); )
           {
               Dependency d = (Dependency) i.next();
               String mavenJarProperty = project.getContext().getMavenJarOverride( Project.standardToLegacyId( d.getId() ) );
               Artifact artifact = DefaultArtifactFactory.createArtifact( d );
   
  -            if ( mavenJarOverride && StringUtils.isNotEmpty(mavenJarProperty) )
  +            if ( mavenJarOverride && StringUtils.isNotEmpty( mavenJarProperty ) )
               {
                   // The jar override option has been set and we have a property
                   // for the this dependency so override the path with the user
                   // specified value.
  -                if ( Character.isDigit( mavenJarProperty.charAt( 0 ) ) )
  +                if ( Character.isDigit( mavenJarProperty.charAt( 0 ) ) || "SNAPSHOT".equals( mavenJarProperty ) )
                   {
                       // User is requesting a specific version of a dependency
                       // be used.
  
  
  
  1.116     +41 -31    maven/src/java/org/apache/maven/MavenUtils.java
  
  Index: MavenUtils.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/MavenUtils.java,v
  retrieving revision 1.115
  retrieving revision 1.116
  diff -u -r1.115 -r1.116
  --- MavenUtils.java	11 Nov 2004 10:56:09 -0000	1.115
  +++ MavenUtils.java	7 Dec 2004 13:18:43 -0000	1.116
  @@ -44,7 +44,6 @@
    *
    * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
    * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  - * @version $Id$
    *
    * @todo Remove all the context creation code and make a ContextBuilder class.
    * @todo [RC2] split getProject (project.properties + defaults) != getPluginProject (plugin.properties only)
  @@ -174,7 +173,7 @@
           }
   
           // 2)
  -        MavenJellyContext context = MavenUtils.createContext( projectDescriptor.getParentFile(), parentContext );
  +        MavenJellyContext context = MavenUtils.createContextNoDefaults( projectDescriptor.getParentFile(), parentContext );
   
           // 3)
           String pomToExtend = project.getExtend();
  @@ -219,6 +218,8 @@
   
           project.resolveIds();
   
  +        applyDefaults( context );
  +
           // Set the created context, and put the project itself in the context. This
           // is how we get the ${pom} reference in the project.xml file to work.
           project.setContext( context );
  @@ -527,6 +528,25 @@
       public static MavenJellyContext createContext( File descriptorDirectory, 
                                                      MavenJellyContext parentContext )
       {
  +        MavenJellyContext context = createContextNoDefaults( descriptorDirectory, parentContext );
  +        applyDefaults( context );
  +        return context;
  +    }
  +
  +    /**
  +     * Create a jelly context given a descriptor directory and parent
  +     * jelly context, but don't apply any defaults.
  +     *
  +     * @param descriptorDirectory The directory from which to pull the standard maven
  +     * properties files from.
  +     * @param parentContext The parent jelly context.
  +     * @todo should premerge driver, etc if they are being kept
  +     * @return The generated maven based on the contents of the standard maven
  +     * properties files.
  +     */
  +    private static MavenJellyContext createContextNoDefaults( File descriptorDirectory, 
  +                                                              MavenJellyContext parentContext )
  +    {
           // System properties
           Properties systemProperties = System.getProperties();
   
  @@ -544,10 +564,6 @@
               MavenUtils.class.getResourceAsStream(
                   MavenConstants.DRIVER_PROPERTIES ) );
   
  -        Properties defaultProperties = loadProperties(
  -            MavenUtils.class.getResourceAsStream(
  -                MavenConstants.DEFAULTS_PROPERTIES ) );
  -
           Map result = MavenUtils.mergeMaps( new Map[]
           {
               systemProperties,
  @@ -559,47 +575,41 @@
   
           MavenJellyContext context;
   
  -        // If we have a parent we eventually want what values it can provide but
  -        // we turn inheritance off momentarily until we finish integrating the
  -        // child's context values into the jelly context because we want the
  -        // child values to win and only use the parent in the event the
  -        // child cannot provide the value.
  -
           if ( parentContext != null )
           {
               context = new MavenJellyContext( parentContext );
  -            context.setInherit( false );
  -
  -            MavenUtils.integrateMapInContext( result, context );
  -
  -            // Turn inheritance back on to make the parent's values visible.
  -            context.setInherit( true );
  -
  -            //add in the default.properties with defaults, but in inheritance mode.
  -            MavenUtils.integrateMapInContext( defaultProperties, context );
           }
           else
           {
               context = new MavenJellyContext();
  +        }
   
  -            //integrate everything else...
  -            MavenUtils.integrateMapInContext( result, context );
  -
  -            //integrate defaults...
  -            MavenUtils.integrateMapInContext( defaultProperties, context );
  +        // Turn off inheritence so parent values are overriden
  +        context.setInherit( false );
   
  -            // Turn inheritance back on to make the parent's values visible.
  -            context.setInherit( true );
  -        }
  +        //integrate everything else...
  +        MavenUtils.integrateMapInContext( result, context );
   
  +        // Turn inheritance back on to make the parent's values visible.
  +        context.setInherit( true );
   
           // Set the basedir value in the context.
           context.setVariable( "basedir", descriptorDirectory.getAbsolutePath() );
   
  +        return context;
  +    }
  +
  +    private static void applyDefaults( MavenJellyContext context )
  +    {
  +        Properties defaultProperties = loadProperties(
  +            MavenUtils.class.getResourceAsStream(
  +                MavenConstants.DEFAULTS_PROPERTIES ) );
  +
  +        //integrate defaults...
  +        MavenUtils.integrateMapInContext( defaultProperties, context );
  +
           // deliberately use the original base directory for these variables
           context.resolveRelativePaths( new File( System.getProperty( "user.dir" ) ) );
  -
  -        return context;
       }
   
       /**
  
  
  
  1.27      +1 -2      maven/src/java/org/apache/maven/repository/AbstractArtifact.java
  
  Index: AbstractArtifact.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/repository/AbstractArtifact.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- AbstractArtifact.java	11 Nov 2004 10:56:09 -0000	1.26
  +++ AbstractArtifact.java	7 Dec 2004 13:18:43 -0000	1.27
  @@ -32,7 +32,6 @@
    * Base class from which all artifact subclasses are derived.
    *
    * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
  - * @version $Id$
    */
   public abstract class AbstractArtifact
       implements Artifact
  @@ -50,7 +49,7 @@
       private String path;
   
       /** Override type. */
  -    private String overrideType = OVERRIDE_NONE;
  +    private String overrideType = null;
   
       /**
        * Default constructor.
  
  
  
  1.36      +306 -223  maven/src/java/org/apache/maven/util/HttpUtils.java
  
  Index: HttpUtils.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/util/HttpUtils.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- HttpUtils.java	11 Nov 2004 10:56:09 -0000	1.35
  +++ HttpUtils.java	7 Dec 2004 13:18:43 -0000	1.36
  @@ -39,18 +39,19 @@
    * @author costin@dnt.ro
    * @author gg@grtmail.com (Added Java 1.1 style HTTP basic auth)
    * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
  - *
    * @todo Need to add a timeout so we can flip to a backup repository.
    * @todo Download everything in a single session.
    * @todo Throw meaningful exception when authentication fails.
    */
   public class HttpUtils
   {
  -    private static final Log LOG = LogFactory.getLog(HttpUtils.class);
  +    private static final Log LOG = LogFactory.getLog( HttpUtils.class );
   
  -    private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone("GMT");
  +    private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone( "GMT" );
   
  -    /** @todo make it a property. */
  +    /**
  +     * @todo make it a property.
  +     */
       private static final int REDIRECT_LIMIT = 5;
   
       private static final DownloadMeter silentDownloadMeter = new SilentDownloadMeter();
  @@ -60,14 +61,14 @@
       /**
        * Use a proxy to bypass the firewall with or without authentication
        *
  -     * @param proxyHost Proxy Host (if proxy is required), or null
  -     * @param proxyPort Proxy Port (if proxy is required), or null
  +     * @param proxyHost     Proxy Host (if proxy is required), or null
  +     * @param proxyPort     Proxy Port (if proxy is required), or null
        * @param proxyUserName Proxy Username (if authentification is required),
  -     *        or null
  +     *                      or null
        * @param proxyPassword Proxy Password (if authentification is required),
  -     *        or null
  +     *                      or null
        * @throws SecurityException if an operation is not authorized by the
  -     * SecurityManager
  +     *                           SecurityManager
        */
       public static void useProxyUser( final String proxyHost,
                                        final String proxyPort,
  @@ -95,23 +96,23 @@
       }
   
       /**
  -     * Retrieve a remote file.  Throws an Exception on errors unless the 
  +     * Retrieve a remote file.  Throws an Exception on errors unless the
        * ifnoreErrors flag is set to True
        *
  -     * @param url the of the file to retrieve
  +     * @param url             the of the file to retrieve
        * @param destinationFile where to store it
  -     * @param ignoreErrors whether to ignore errors during I/O or throw an
  -     *      exception when they happen
  -     * @param useTimestamp whether to check the modified timestamp on the
  -     *      <code>destinationFile</code> against the remote <code>source</code>
  -     * @param proxyHost Proxy Host (if proxy is required), or null
  -     * @param proxyPort Proxy Port (if proxy is required), or null
  -     * @param proxyUserName Proxy Username (if authentification is required),
  -     *        or null.
  -     * @param proxyPassword Proxy Password (if authentification is required),
  -     *        or null.
  -     * @param useChecksum Flag to indicate the use of the checksum for the retrieved
  -     *        artifact if it is available.
  +     * @param ignoreErrors    whether to ignore errors during I/O or throw an
  +     *                        exception when they happen
  +     * @param useTimestamp    whether to check the modified timestamp on the
  +     *                        <code>destinationFile</code> against the remote <code>source</code>
  +     * @param proxyHost       Proxy Host (if proxy is required), or null
  +     * @param proxyPort       Proxy Port (if proxy is required), or null
  +     * @param proxyUserName   Proxy Username (if authentification is required),
  +     *                        or null.
  +     * @param proxyPassword   Proxy Password (if authentification is required),
  +     *                        or null.
  +     * @param useChecksum     Flag to indicate the use of the checksum for the retrieved
  +     *                        artifact if it is available.
        */
       public static void getFile( String url,
                                   File destinationFile,
  @@ -128,26 +129,26 @@
       }
   
       /**
  -     * Retrieve a remote file.  Throws an Exception on errors unless the 
  +     * Retrieve a remote file.  Throws an Exception on errors unless the
        * ifnoreErrors flag is set to True
        *
  -     * @param url the of the file to retrieve
  +     * @param url             the of the file to retrieve
        * @param destinationFile where to store it
  -     * @param ignoreErrors whether to ignore errors during I/O or throw an
  -     *      exception when they happen
  -     * @param useTimestamp whether to check the modified timestamp on the
  -     *      <code>destinationFile</code> against the remote <code>source</code>
  -     * @param proxyHost Proxy Host (if proxy is required), or null
  -     * @param proxyPort Proxy Port (if proxy is required), or null
  -     * @param proxyUserName Proxy Username (if authentification is required),
  -     *        or null.
  -     * @param proxyPassword Proxy Password (if authentification is required),
  -     *        or null.
  -     * @param useChecksum Flag to indicate the use of the checksum for the retrieved
  -     *        artifact if it is available.
  -     * @param loginHost The host the authentication request is originating from. 
  -     *        Essentially, the computer name for this machine.
  -     * @param loginDomain the domain to authenticate within.
  +     * @param ignoreErrors    whether to ignore errors during I/O or throw an
  +     *                        exception when they happen
  +     * @param useTimestamp    whether to check the modified timestamp on the
  +     *                        <code>destinationFile</code> against the remote <code>source</code>
  +     * @param proxyHost       Proxy Host (if proxy is required), or null
  +     * @param proxyPort       Proxy Port (if proxy is required), or null
  +     * @param proxyUserName   Proxy Username (if authentification is required),
  +     *                        or null.
  +     * @param proxyPassword   Proxy Password (if authentification is required),
  +     *                        or null.
  +     * @param useChecksum     Flag to indicate the use of the checksum for the retrieved
  +     *                        artifact if it is available.
  +     * @param loginHost       The host the authentication request is originating from.
  +     *                        Essentially, the computer name for this machine.
  +     * @param loginDomain     the domain to authenticate within.
        */
       public static void getFile( String url,
                                   File destinationFile,
  @@ -197,21 +198,21 @@
       }
   
       /**
  -     * Retrieve a remote file.  Throws an Exception on errors unless the 
  +     * Retrieve a remote file.  Throws an Exception on errors unless the
        * ifnoreErrors flag is set to True
        *
  -     * @param url the of the file to retrieve
  +     * @param url             the of the file to retrieve
        * @param destinationFile where to store it
  -     * @param ignoreErrors whether to ignore errors during I/O or throw an
  -     *      exception when they happen
  -     * @param useTimestamp whether to check the modified timestamp on the
  -     *      <code>destinationFile</code> against the remote <code>source</code>
  -     * @param proxyHost Proxy Host (if proxy is required), or null
  -     * @param proxyPort Proxy Port (if proxy is required), or null
  -     * @param proxyUserName Proxy Username (if authentification is required),
  -     *        or null
  -     * @param proxyPassword Proxy Password (if authentification is required),
  -     *        or null
  +     * @param ignoreErrors    whether to ignore errors during I/O or throw an
  +     *                        exception when they happen
  +     * @param useTimestamp    whether to check the modified timestamp on the
  +     *                        <code>destinationFile</code> against the remote <code>source</code>
  +     * @param proxyHost       Proxy Host (if proxy is required), or null
  +     * @param proxyPort       Proxy Port (if proxy is required), or null
  +     * @param proxyUserName   Proxy Username (if authentification is required),
  +     *                        or null
  +     * @param proxyPassword   Proxy Password (if authentification is required),
  +     *                        or null
        */
       public static void getFile( String url,
                                   File destinationFile,
  @@ -230,22 +231,22 @@
        * Retrieve a remote file.  Throws an Exception on errors unless the
        * ifnoreErrors flag is set to True
        *
  -     * @param url the of the file to retrieve
  +     * @param url             the of the file to retrieve
        * @param destinationFile where to store it
  -     * @param ignoreErrors whether to ignore errors during I/O or throw an
  -     *      exception when they happen
  -     * @param useTimestamp whether to check the modified timestamp on the
  -     *      <code>destinationFile</code> against the remote <code>source</code>
  -     * @param proxyHost Proxy Host (if proxy is required), or null
  -     * @param proxyPort Proxy Port (if proxy is required), or null
  -     * @param proxyUserName Proxy Username (if authentification is required),
  -     *        or null
  -     * @param proxyPassword Proxy Password (if authentification is required),
  -     *        or null
  -     * @param loginHost The host the authentication request is originating from.
  -     *        Essentially, the computer name for this machine.
  -     * @param loginDomain the domain to authenticate within.
  -     * @param downloadMeter the download meter to use
  +     * @param ignoreErrors    whether to ignore errors during I/O or throw an
  +     *                        exception when they happen
  +     * @param useTimestamp    whether to check the modified timestamp on the
  +     *                        <code>destinationFile</code> against the remote <code>source</code>
  +     * @param proxyHost       Proxy Host (if proxy is required), or null
  +     * @param proxyPort       Proxy Port (if proxy is required), or null
  +     * @param proxyUserName   Proxy Username (if authentification is required),
  +     *                        or null
  +     * @param proxyPassword   Proxy Password (if authentification is required),
  +     *                        or null
  +     * @param loginHost       The host the authentication request is originating from.
  +     *                        Essentially, the computer name for this machine.
  +     * @param loginDomain     the domain to authenticate within.
  +     * @param downloadMeter   the download meter to use
        */
       public static void getFile( String url,
                                   File destinationFile,
  @@ -292,22 +293,22 @@
       /**
        * Retrieve a remote file.
        *
  -     * @param url the URL of the file to retrieve
  +     * @param url             the URL of the file to retrieve
        * @param destinationFile where to store it
  -     * @param timestamp if provided, the remote URL is only retrieved if it was
  -     * modified more recently than timestamp. Otherwise, negative value indicates that
  -     * the remote URL should be retrieved unconditionally.
  -     * @param proxyHost Proxy Host (if proxy is required), or null
  -     * @param proxyPort Proxy Port (if proxy is required), or null
  -     * @param proxyUserName Proxy Username (if authentification is required),
  -     *        or null
  -     * @param proxyPassword Proxy Password (if authentification is required),
  -     *        or null
  -     * @param loginHost The host the authentication request is originating from. 
  -     *        Essentially, the computer name for this machine.
  -     * @param loginDomain the domain to authenticate within.
  -     * @param downloadMeter the download meter to use
  -     * @exception IOException If an I/O exception occurs.
  +     * @param timestamp       if provided, the remote URL is only retrieved if it was
  +     *                        modified more recently than timestamp. Otherwise, negative value indicates that
  +     *                        the remote URL should be retrieved unconditionally.
  +     * @param proxyHost       Proxy Host (if proxy is required), or null
  +     * @param proxyPort       Proxy Port (if proxy is required), or null
  +     * @param proxyUserName   Proxy Username (if authentification is required),
  +     *                        or null
  +     * @param proxyPassword   Proxy Password (if authentification is required),
  +     *                        or null
  +     * @param loginHost       The host the authentication request is originating from.
  +     *                        Essentially, the computer name for this machine.
  +     * @param loginDomain     the domain to authenticate within.
  +     * @param downloadMeter   the download meter to use
  +     * @throws IOException If an I/O exception occurs.
        */
       public static void getFile( String url,
                                   File destinationFile,
  @@ -319,7 +320,7 @@
                                   String loginHost,
                                   String loginDomain,
                                   DownloadMeter downloadMeter )
  -      throws IOException
  +        throws IOException
       {
           String[] s = parseUrl( url );
           String username = s[0];
  @@ -333,56 +334,66 @@
           }
   
           URL source = new URL( parsedUrl );
  -        if (source.getProtocol().equals("http") || source.getProtocol().equals("https")) {
  +        if ( source.getProtocol().equals( "http" ) || source.getProtocol().equals( "https" ) )
  +        {
               Credentials creds = null;
  -            if (!empty(loginHost) || !empty(loginDomain)) {
  -                creds = new NTCredentials(proxyUserName, proxyPassword, loginHost, loginDomain);
  +            if ( !empty( loginHost ) || !empty( loginDomain ) )
  +            {
  +                creds = new NTCredentials( proxyUserName, proxyPassword, loginHost, loginDomain );
               }
  -            else if (!empty(proxyUserName) || !empty(proxyPassword)) {
  -                creds = new UsernamePasswordCredentials(proxyUserName, proxyPassword);
  +            else if ( !empty( proxyUserName ) || !empty( proxyPassword ) )
  +            {
  +                creds = new UsernamePasswordCredentials( proxyUserName, proxyPassword );
               }
  -        
  +
               HttpClient client = new HttpClient();
               HostConfiguration hc = new HostConfiguration();
  -            hc.setHost(source.getHost(), source.getPort(), source.getProtocol());
  +            hc.setHost( source.getHost(), source.getPort(), source.getProtocol() );
   
  -            if (!empty(proxyHost) || !empty(proxyPort)) {
  -                try {
  -                    hc.setProxy(proxyHost, Integer.parseInt(proxyPort));
  -                } catch (NumberFormatException e) {
  -                    LOG.error("Unable to parse proxy port '"+proxyPort+"', ignoring proxy settings");
  +            if ( !empty( proxyHost ) || !empty( proxyPort ) )
  +            {
  +                try
  +                {
  +                    hc.setProxy( proxyHost, Integer.parseInt( proxyPort ) );
  +                }
  +                catch ( NumberFormatException e )
  +                {
  +                    LOG.error( "Unable to parse proxy port '" + proxyPort + "', ignoring proxy settings" );
                   }
               }
  -            client.setHostConfiguration(hc);
  -            if (creds != null) {
  -                client.getState().setProxyCredentials(null, null, creds);
  +            client.setHostConfiguration( hc );
  +            if ( creds != null )
  +            {
  +                client.getState().setProxyCredentials( null, null, creds );
                   client.getState().setAuthenticationPreemptive( true );
               }
   
               // Basic authentication
               if ( username != null || password != null )
               {
  -                creds = new UsernamePasswordCredentials(username, password);
  -                client.getState().setCredentials(null, null, creds);
  +                creds = new UsernamePasswordCredentials( username, password );
  +                client.getState().setCredentials( null, null, creds );
                   client.getState().setAuthenticationPreemptive( true );
               }
   
  -            for (int i = 0; i < REDIRECT_LIMIT; i++ )
  +            for ( int i = 0; i < REDIRECT_LIMIT; i++ )
               {
  -                String redirect = retrieveArtifact(client, source, destinationFile, timestamp, downloadMeter);
  -                if (redirect == null) {
  +                String redirect = retrieveArtifact( client, source, destinationFile, timestamp, downloadMeter );
  +                if ( redirect == null )
  +                {
                       break;
                   }
  -                if (i >= REDIRECT_LIMIT - 1) {
  -                    throw new IOException("Redirection limit of " + REDIRECT_LIMIT + " exceeded");
  +                if ( i >= REDIRECT_LIMIT - 1 )
  +                {
  +                    throw new IOException( "Redirection limit of " + REDIRECT_LIMIT + " exceeded" );
                   }
   
                   redirect = StringUtils.replace( redirect, ":/", "://" );
                   redirect = StringUtils.replace( redirect, "//", "/" );
   
                   source = new URL( redirect );
  -                hc.setHost(source.getHost(), source.getPort(), source.getProtocol());
  -                client.setHostConfiguration(hc);
  +                hc.setHost( source.getHost(), source.getPort(), source.getProtocol() );
  +                client.setHostConfiguration( hc );
               }
           }
           else
  @@ -393,7 +404,8 @@
               //set up the URL connection
               URLConnection connection = source.openConnection();
               InputStream is = null;
  -            try {
  +            try
  +            {
                   //modify the headers
                   if ( timestamp >= 0 )
                   {
  @@ -404,7 +416,7 @@
                   if ( username != null || password != null )
                   {
                       String up = username + ":" + password;
  -                    String encoding = Base64.encode(up.getBytes(), false);
  +                    String encoding = Base64.encode( up.getBytes(), false );
                       connection.setRequestProperty( "Authorization", "Basic " + encoding );
                   }
   
  @@ -413,185 +425,248 @@
   
                   if ( connection.getLastModified() <= timestamp && connection.getLastModified() != 0 )
                   {
  -                    LOG.debug("Not modified");
  +                    LOG.debug( "Not modified" );
                       return;
                   }
   
                   long remoteTimestamp = connection.getLastModified();
   
                   is = connection.getInputStream();
  -                process( true, is, destinationFile, 0, timestamp, remoteTimestamp, downloadMeter );
  +                process( is, destinationFile, 0, timestamp, remoteTimestamp, downloadMeter );
               }
  -            finally {
  -                if (is != null) try { is.close(); } catch (Exception e) { LOG.error("error closing stream", e); }
  +            finally
  +            {
  +                if ( is != null )
  +                    try
  +                    {
  +                        is.close();
  +                    }
  +                    catch ( Exception e )
  +                    {
  +                        LOG.error( "error closing stream", e );
  +                    }
               }
           }
       }
   
  -    private static String retrieveArtifact(HttpClient client, URL source, File destinationFile, long timestamp, DownloadMeter downloadMeter ) throws FileNotFoundException, IOException, HttpRecoverableException {
  +    private static String retrieveArtifact( HttpClient client, URL source, File destinationFile, long timestamp, DownloadMeter downloadMeter ) throws FileNotFoundException, IOException, HttpRecoverableException
  +    {
           int statusCode = -1;
           String redirectUrl = null;
           InputStream is = null;
  -        GetMethod get = new GetMethod(source.getPath());
  +        GetMethod get = new GetMethod( source.getPath() );
           // Handle these ourselves until httpclient deals with cross host redirects
  -        get.setFollowRedirects(false);
  -        try {
  +        get.setFollowRedirects( false );
  +        try
  +        {
               if ( timestamp >= 0 )
               {
  -                SimpleDateFormat fmt = new SimpleDateFormat("EEE, dd-MMM-yy HH:mm:ss zzz", Locale.US);
  -                fmt.setTimeZone(GMT_TIME_ZONE);
  -                Header hdr = new Header("If-Modified-Since", fmt.format(new Date(timestamp)));
  -                LOG.debug("sending ==> " + hdr + "(" + timestamp + ")");
  -                get.addRequestHeader(hdr);
  +                SimpleDateFormat fmt = new SimpleDateFormat( "EEE, dd-MMM-yy HH:mm:ss zzz", Locale.US );
  +                fmt.setTimeZone( GMT_TIME_ZONE );
  +                Header hdr = new Header( "If-Modified-Since", fmt.format( new Date( timestamp ) ) );
  +                LOG.debug( "sending ==> " + hdr + "(" + timestamp + ")" );
  +                get.addRequestHeader( hdr );
               }
   
               // We will retry up to 3 times.
  -            for (int i = 0; i < 3; i++)
  +            for ( int i = 0; i < 3; i++ )
               {
  -                try 
  +                try
                   {
  -                    statusCode = client.executeMethod(get);
  -                    if (statusCode != -1) {
  -                        LOG.debug("Received status code: " + statusCode);
  +                    statusCode = client.executeMethod( get );
  +                    if ( statusCode != -1 )
  +                    {
  +                        LOG.debug( "Received status code: " + statusCode );
                           break;
                       }
                   }
  -                catch (HttpRecoverableException e)
  +                catch ( HttpRecoverableException e )
                   {
  -                    if (i >= 2) {
  +                    if ( i >= 2 )
  +                    {
                           throw e;
                       }
  -                    LOG.warn( "A recoverable exception occurred." + e.getMessage());
  +                    LOG.warn( "A recoverable exception occurred." + e.getMessage() );
                   }
  -                catch (IOException e)
  +                catch ( IOException e )
                   {
                       throw e;
                   }
  -                LOG.warn("retrying (" + (i + 1) + ")");
  +                LOG.warn( "retrying (" + ( i + 1 ) + ")" );
               }
  -    
  -            boolean use = statusCode < 300;
   
  -            if (statusCode == HttpURLConnection.HTTP_NOT_MODIFIED) {
  -                LOG.debug("Not modified");
  +            boolean isOk = statusCode < 300;
  +
  +            if ( statusCode == HttpURLConnection.HTTP_NOT_MODIFIED )
  +            {
  +                LOG.debug( "Not modified" );
               }
  -            else if (statusCode >= 300 && statusCode < 400) {
  -                Header header = get.getResponseHeader("Location");
  -                if (header != null) {
  +            else if ( statusCode >= 300 && statusCode < 400 )
  +            {
  +                Header header = get.getResponseHeader( "Location" );
  +                if ( header != null )
  +                {
                       redirectUrl = header.getValue();
  -                    LOG.debug("Location: " + redirectUrl);
  +                    LOG.debug( "Location: " + redirectUrl );
                   }
  -                else {
  -                    LOG.warn("Location header not specified");
  +                else
  +                {
  +                    LOG.warn( "Location header not specified" );
                   }
               }
   
               // Must read content regardless
               is = get.getResponseBodyAsStream();
  -            if (is == null) {
  +            if ( is == null )
  +            {
  +                // This could be null, which is fine. The reponse just wasn't a redirect.
                   return redirectUrl;
               }
   
  -            int projected = 0;
  -            Header header = get.getResponseHeader("Content-Length");
  -            if (header != null) {
  -                try {
  -                    projected = Integer.valueOf(header.getValue()).intValue();
  -                }
  -                catch (NumberFormatException e) {
  -                    LOG.warn( "error parsing content length header '" + header.getValue() + "' " + e );
  +            if ( isOk )
  +            {
  +                int projected = 0;
  +                Header header = get.getResponseHeader( "Content-Length" );
  +                if ( header != null )
  +                {
  +                    try
  +                    {
  +                        projected = Integer.valueOf( header.getValue() ).intValue();
  +                    }
  +                    catch ( NumberFormatException e )
  +                    {
  +                        LOG.warn( "error parsing content length header '" + header.getValue() + "' " + e );
  +                    }
                   }
  -            }
   
  -            long remoteTimestamp = 0;
  -            if ( use ) {
  -                header = get.getResponseHeader("Last-Modified");
  -                if (header != null) {
  -                    try {
  -                        remoteTimestamp = DateParser.parseDate(header.getValue()).getTime();
  +                long remoteTimestamp = 0;
  +                header = get.getResponseHeader( "Last-Modified" );
  +                if ( header != null )
  +                {
  +                    try
  +                    {
  +                        remoteTimestamp = DateParser.parseDate( header.getValue() ).getTime();
                       }
  -                    catch (DateParseException e) {
  -                        LOG.warn("Unable to parse last modified header", e );
  +                    catch ( DateParseException e )
  +                    {
  +                        LOG.warn( "Unable to parse last modified header", e );
                       }
  -                    LOG.debug("last-modified = " + header.getValue() + " (" + remoteTimestamp + ")");
  +                    LOG.debug( "last-modified = " + header.getValue() + " (" + remoteTimestamp + ")" );
                   }
  -                else {
  -                    LOG.warn("warning: last-modified not specified");
  +                else
  +                {
  +                    LOG.warn( "warning: last-modified not specified" );
                   }
                   if ( remoteTimestamp <= timestamp && remoteTimestamp != 0 )
                   {
  -                    LOG.debug("Not modified - local file is newer");
  -                    // TODO: httpclient doesn't seem to think it is valid to close the stream before its done like this. Why?
  -                    // use = false;
  -                    return null;
  +                    LOG.debug( "Not modified - local file is newer" );
                   }
  +                else
  +                {
  +                    process( is, destinationFile, projected, timestamp, remoteTimestamp, downloadMeter );
  +                }
  +                return null;
               }
  -            process( use, is, destinationFile, projected, timestamp, remoteTimestamp, downloadMeter );
  -        }
  -        finally {
  -            if (is != null) try { is.close(); } catch (Exception e) { LOG.error("error closing stream", e); }
  -            get.releaseConnection();
  -        }
  +            else
  +            {
  +                readAndDispose( is );
   
  -        if ( statusCode == HttpURLConnection.HTTP_NOT_FOUND)
  -        {
  -            throw new FileNotFoundException(source.toString());
  -        }
  -        // test for 401 result (HTTP only)
  -        if ( statusCode == HttpURLConnection.HTTP_UNAUTHORIZED )
  -        {
  -            throw new IOException( "Not authorized." );
  +                if ( statusCode == HttpURLConnection.HTTP_NOT_FOUND )
  +                {
  +                    throw new FileNotFoundException( source.toString() );
  +                }
  +                // test for 401 result (HTTP only)
  +                if ( statusCode == HttpURLConnection.HTTP_UNAUTHORIZED )
  +                {
  +                    throw new IOException( "Not authorized." );
  +                }
  +                // test for 403 result (HTTP only)
  +                if ( statusCode == HttpURLConnection.HTTP_FORBIDDEN )
  +                {
  +                    throw new IOException( "Forbidden." );
  +                }
  +                // test for 407 result (HTTP only)
  +                if ( statusCode == HttpURLConnection.HTTP_PROXY_AUTH )
  +                {
  +                    throw new IOException( "Not authorized by proxy." );
  +                }
  +                throw new IOException( "Unknown error downloading; status code was: " + statusCode );
  +            }
           }
  -        // test for 407 result (HTTP only)
  -        if ( statusCode == HttpURLConnection.HTTP_PROXY_AUTH )
  +        finally
           {
  -            throw new IOException( "Not authorized by proxy." );
  +            if ( is != null )
  +            {
  +                try
  +                {
  +                    is.close();
  +                }
  +                catch ( Exception e )
  +                {
  +                    LOG.error( "error closing stream", e );
  +                }
  +            }
  +            get.releaseConnection();
           }
  -        return redirectUrl;
       }
   
  -    private static void process( boolean use, InputStream is, File destinationFile, int projected, long timestamp, long remoteTimestamp, DownloadMeter downloadMeter ) 
  -        throws IOException {
  +    private static void process( InputStream is, File destinationFile, int projected, long timestamp, long remoteTimestamp, DownloadMeter downloadMeter )
  +        throws IOException
  +    {
           byte[] buffer = new byte[100 * 1024];
           int length, total = 0;
           OutputStream os = null;
   
  -        try {
  -            if ( use ) {
  -                os = new FileOutputStream( destinationFile );
  -            }
  +        try
  +        {
  +            os = new FileOutputStream( destinationFile );
               while ( ( length = is.read( buffer ) ) >= 0 )
               {
  -                if ( use ) {
  -                    os.write( buffer, 0, length );
  -                    total += length;
  -                    downloadMeter.update( total, projected );
  -                }
  +                os.write( buffer, 0, length );
  +                total += length;
  +                downloadMeter.update( total, projected );
               }
           }
  -        finally {
  -            if (os != null) try { os.close(); } catch (Exception e) { LOG.error("error closing stream", e); }
  +        finally
  +        {
  +            if ( os != null )
  +                try
  +                {
  +                    os.close();
  +                }
  +                catch ( Exception e )
  +                {
  +                    LOG.error( "error closing stream", e );
  +                }
           }
   
  -        if ( use ) {
  -            downloadMeter.finish( total );
  +        downloadMeter.finish( total );
   
  -            LOG.debug("Local timestamp: " + timestamp);
  -            LOG.debug("Remote timestamp: " + remoteTimestamp);
  -  
  -            // if (and only if) the use file time option is set, then the
  -            // saved file now has its timestamp set to that of the downloaded
  -            // file
  -            if ( timestamp >= 0 )
  +        LOG.debug( "Local timestamp: " + timestamp );
  +        LOG.debug( "Remote timestamp: " + remoteTimestamp );
  +
  +        // if (and only if) the use file time option is set, then the
  +        // saved file now has its timestamp set to that of the downloaded
  +        // file
  +        if ( timestamp >= 0 )
  +        {
  +            if ( remoteTimestamp != 0 )
               {
  -                if ( remoteTimestamp != 0 )
  -                {
  -                    touchFile( destinationFile, remoteTimestamp );
  -                }
  +                touchFile( destinationFile, remoteTimestamp );
               }
           }
       }
   
  +    private static void readAndDispose( InputStream is )
  +        throws IOException
  +    {
  +        byte[] buffer = new byte[100 * 1024];
  +
  +        while ( is.read( buffer ) >= 0 )
  +        {
  +        }
  +    }
  +
       /**
        * Parse an url which might contain a username and password. If the
        * given url doesn't contain a username and password then return the
  @@ -616,7 +691,7 @@
           int i = url.indexOf( "@" );
           if ( i > 0 )
           {
  -            String protocol = url.substring( 0, url.indexOf("://") ) + "://";
  +            String protocol = url.substring( 0, url.indexOf( "://" ) ) + "://";
               String s = url.substring( protocol.length(), i );
               int j = s.indexOf( ":" );
               parsedUrl[0] = s.substring( 0, j );
  @@ -630,10 +705,10 @@
       /**
        * set the timestamp of a named file to a specified time.
        *
  -     * @param file the file to touch
  +     * @param file       the file to touch
        * @param timemillis in milliseconds since the start of the era
        * @return true if it succeeded. False means that this is a java1.1 system
  -     *      and that file times can not be set
  +     *         and that file times can not be set
        */
       private static boolean touchFile( File file, long timemillis )
       {
  @@ -648,29 +723,37 @@
               modifiedTime = timemillis;
           }
   
  -        LOG.debug("touching " + file + " with " + modifiedTime);
  +        LOG.debug( "touching " + file + " with " + modifiedTime );
           file.setLastModified( modifiedTime );
           return true;
       }
   
  -    private static boolean empty(String s) { return s == null || s.length() == 0; }
  +    private static boolean empty( String s )
  +    {
  +        return s == null || s.length() == 0;
  +    }
   
       /**
        * @todo this method of setting the meter is not desirable... but a static method class is not really
  -     *   conducive to anything else :)
  +     * conducive to anything else :)
        */
  -    public static void setMeterType(String type) {
  -        if (type.equals("bootstrap")) { 
  +    public static void setMeterType( String type )
  +    {
  +        if ( type.equals( "bootstrap" ) )
  +        {
               defaultDownloadMeter = new BootstrapDownloadMeter();
           }
  -        else if (type.equals("console")) { 
  +        else if ( type.equals( "console" ) )
  +        {
               defaultDownloadMeter = new ConsoleDownloadMeter();
           }
  -        else if (type.equals("silent")) { 
  +        else if ( type.equals( "silent" ) )
  +        {
               defaultDownloadMeter = new SilentDownloadMeter();
           }
  -        else {
  -            LOG.warn("Unknown download meter type: " + type);
  +        else
  +        {
  +            LOG.warn( "Unknown download meter type: " + type );
           }
       }
   }
  
  
  
  1.41      +11 -1     maven/src/java/org/apache/maven/verifier/DependencyVerifier.java
  
  Index: DependencyVerifier.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/verifier/DependencyVerifier.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- DependencyVerifier.java	11 Nov 2004 10:56:09 -0000	1.40
  +++ DependencyVerifier.java	7 Dec 2004 13:18:43 -0000	1.41
  @@ -40,7 +40,6 @@
    * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
    * @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
    *
  - * @version $Id$
    *
    * @todo Separate out the local settings verifier because this only needs to be run
    *       once a session, but is currently being run during project verification so
  @@ -253,6 +252,17 @@
           for ( Iterator i = failedDependencies.iterator(); i.hasNext();)
           {
               Artifact artifact = (Artifact) i.next();
  +
  +            // before we try to download a missing dependency we have to verify
  +            // that the dependency is not of the type Artifact.OVERRIDE_PATH,
  +            // in which case it can not be downloaded. Just skip this iteration.
  +            // Since the dependency won't get removed from the failedDependencies list
  +            // an error message will be created.
  +            String overrideType = artifact.getOverrideType();
  +            if ( overrideType == Artifact.OVERRIDE_PATH )
  +            {
  +               continue;
  +            }
   
               // The directory structure for the project this dependency belongs to
               // may not exists so attempt to create the project directory structure
  
  
  
  1.53      +6 -0      maven/src/test/touchstone-build/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/maven.xml,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- maven.xml	11 Nov 2004 10:56:09 -0000	1.52
  +++ maven.xml	7 Dec 2004 13:18:43 -0000	1.53
  @@ -774,6 +774,12 @@
     </goal>
   
     <goal name="test-inheritance">
  +    <ant:echo>Testing 0 level</ant:echo>
  +    <maven:maven
  +      descriptor="${basedir}/src/reactor-build/inheritence/project.xml"
  +      goals="runTest"
  +      ignoreFailures="false"
  +    />
       <ant:echo>Testing 1 level</ant:echo>
       <maven:maven
         descriptor="${basedir}/src/reactor-build/inheritence/subproject/project.xml"
  
  
  
  1.5       +21 -1     maven/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- maven.xml	5 May 2004 13:05:54 -0000	1.4
  +++ maven.xml	7 Dec 2004 13:18:43 -0000	1.5
  @@ -17,7 +17,27 @@
    */
    -->
   
  -<project xmlns:j="jelly:core" xmlns:ant="jelly:ant">
  +<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" default="runTest">
  +
  +    <goal name="runTest">
  +      <ant:echo>overridden builtin property POM substitution</ant:echo>
  +      <j:set var="value" value="${pom.url}"/>
  +      <j:if test="${value != 'dummy'}">
  +        <ant:fail>Sorry, but pom.url = '${value}', inherited incorrectly</ant:fail>
  +      </j:if>
  +      <ant:echo>default builtin property substitution</ant:echo>
  +      <j:set var="value" value="${maven.build.dir}"/>
  +      <j:set var="targetDir" value="${basedir}/target"/>
  +      <j:if test="${value != targetDir}">
  +        <ant:fail>Sorry, but maven.build.dir = '${value}', incorrectly set</ant:fail>
  +      </j:if>
  +      <ant:echo>default builtin property POM substitution</ant:echo>
  +      <j:set var="value" value="${pom.description}"/>
  +      <j:set var="targetDir" value="${basedir}/target"/>
  +      <j:if test="${value != targetDir}">
  +        <ant:fail>Sorry, but pom.description = '${value}', incorrectly set</ant:fail>
  +      </j:if>
  +    </goal>
   
       <goal name="parent-goal">
         <ant:property name="parentVar" value="parentVar" />
  
  
  
  1.4       +2 -0      maven/src/test/touchstone-build/src/reactor-build/inheritence/project.properties
  
  Index: project.properties
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/project.properties,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- project.properties	23 Mar 2004 02:18:28 -0000	1.3
  +++ project.properties	7 Dec 2004 13:18:43 -0000	1.4
  @@ -16,3 +16,5 @@
   
   parent.project.property=okiedokie
   parent.project.property.override=original
  +
  +maven.repo.remote=dummy
  
  
  
  1.4       +25 -24    maven/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/project.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- project.xml	23 Mar 2004 02:18:28 -0000	1.3
  +++ project.xml	7 Dec 2004 13:18:43 -0000	1.4
  @@ -16,27 +16,28 @@
    * limitations under the License.
    */
    -->
  -
  -<project>
  -  <pomVersion>3</pomVersion>
  -  <currentVersion>1.0</currentVersion>
  -  <name>root</name>
  -  <organization/>
  -  <inceptionYear/>
  -  <package/>
  -  <logo/>
  -  <shortDescription/>
  -  <url/>
  -  <siteAddress/>
  -  <siteDirectory/>
  -  <distributionSite/>
  -  <distributionDirectory/>
  -  <repository/>
  -  <mailingLists/>
  -  <developers/>
  -  <dependencies/>
  -  <build>
  -    <sourceDirectory/>
  -    <unitTestSourceDirectory/>
  -  </build>
  -</project>
  +
  +<project>
  +  <pomVersion>3</pomVersion>
  +  <currentVersion>1.0</currentVersion>
  +  <name>root</name>
  +  <organization/>
  +  <inceptionYear/>
  +  <package/>
  +  <logo/>
  +  <shortDescription/>
  +  <description>${maven.build.dir}</description>
  +  <url>${maven.repo.remote}</url>
  +  <siteAddress/>
  +  <siteDirectory/>
  +  <distributionSite/>
  +  <distributionDirectory/>
  +  <repository/>
  +  <mailingLists/>
  +  <developers/>
  +  <dependencies/>
  +  <build>
  +    <sourceDirectory/>
  +    <unitTestSourceDirectory/>
  +  </build>
  +</project>
  
  
  
  1.5       +10 -0     maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- maven.xml	5 May 2004 13:05:54 -0000	1.4
  +++ maven.xml	7 Dec 2004 13:18:43 -0000	1.5
  @@ -50,6 +50,16 @@
         <j:if test="${value != 'overridden'}">
           <ant:fail>Sorry, but parent.build.property.override = '${value}', inherited incorrectly</ant:fail>
         </j:if>
  +      <ant:echo>inherited builtin property override test</ant:echo>
  +      <j:set var="value" value="${maven.repo.remote}"/>
  +      <j:if test="${value != 'dummy'}">
  +        <ant:fail>Sorry, but maven.repo.remote = '${value}', inherited incorrectly</ant:fail>
  +      </j:if>
  +      <ant:echo>inherited builtin property POM substitution</ant:echo>
  +      <j:set var="value" value="${pom.url}"/>
  +      <j:if test="${value != 'dummy'}">
  +        <ant:fail>Sorry, but pom.url = '${value}', inherited incorrectly</ant:fail>
  +      </j:if>
       </goal>
   
       <goal name="parent-goal-override-1">
  
  
  
  1.4       +24 -25    maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- project.xml	23 Mar 2004 02:18:28 -0000	1.3
  +++ project.xml	7 Dec 2004 13:18:43 -0000	1.4
  @@ -16,28 +16,27 @@
    * limitations under the License.
    */
    -->
  -
  -<project>
  -  <extend>../project.xml</extend>
  -  <pomVersion>3</pomVersion>
  -  <currentVersion>1.0</currentVersion>
  -  <name>subproject</name>
  -  <organization/>
  -  <inceptionYear/>
  -  <package/>
  -  <logo/>
  -  <shortDescription/>
  -  <url/>
  -  <siteAddress/>
  -  <siteDirectory/>
  -  <distributionSite/>
  -  <distributionDirectory/>
  -  <repository/>
  -  <mailingLists/>
  -  <developers/>
  -  <dependencies/>
  -  <build>
  -    <sourceDirectory/>
  -    <unitTestSourceDirectory/>
  -  </build>
  -</project>
  +
  +<project>
  +  <extend>../project.xml</extend>
  +  <pomVersion>3</pomVersion>
  +  <currentVersion>1.0</currentVersion>
  +  <name>subproject</name>
  +  <organization/>
  +  <inceptionYear/>
  +  <package/>
  +  <logo/>
  +  <shortDescription/>
  +  <siteAddress/>
  +  <siteDirectory/>
  +  <distributionSite/>
  +  <distributionDirectory/>
  +  <repository/>
  +  <mailingLists/>
  +  <developers/>
  +  <dependencies/>
  +  <build>
  +    <sourceDirectory/>
  +    <unitTestSourceDirectory/>
  +  </build>
  +</project>
  
  
  
  1.5       +10 -0     maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- maven.xml	5 May 2004 13:05:54 -0000	1.4
  +++ maven.xml	7 Dec 2004 13:18:44 -0000	1.5
  @@ -62,6 +62,16 @@
         <j:if test="${value != 'overridden2'}">
           <ant:fail>Sorry, but parent.build.property.override = '${value}', inherited incorrectly in 2nd subproject</ant:fail>
         </j:if>
  +      <ant:echo>inherited builtin property override test</ant:echo>
  +      <j:set var="value" value="${maven.repo.remote}"/>
  +      <j:if test="${value != 'dummy'}">
  +        <ant:fail>Sorry, but maven.repo.remote = '${value}', inherited incorrectly</ant:fail>
  +      </j:if>
  +      <ant:echo>inherited builtin property POM substitution</ant:echo>
  +      <j:set var="value" value="${pom.url}"/>
  +      <j:if test="${value != 'dummy'}">
  +        <ant:fail>Sorry, but pom.url = '${value}', inherited incorrectly</ant:fail>
  +      </j:if>
       </goal>
   
       <goal name="parent-goal-override-2">
  
  
  
  1.4       +24 -25    maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- project.xml	23 Mar 2004 02:18:28 -0000	1.3
  +++ project.xml	7 Dec 2004 13:18:44 -0000	1.4
  @@ -16,28 +16,27 @@
    * limitations under the License.
    */
    -->
  -
  -<project>
  -  <extend>../project.xml</extend>
  -  <pomVersion>3</pomVersion>
  -  <currentVersion>1.0</currentVersion>
  -  <name>subproject</name>
  -  <organization/>
  -  <inceptionYear/>
  -  <package/>
  -  <logo/>
  -  <shortDescription/>
  -  <url/>
  -  <siteAddress/>
  -  <siteDirectory/>
  -  <distributionSite/>
  -  <distributionDirectory/>
  -  <repository/>
  -  <mailingLists/>
  -  <developers/>
  -  <dependencies/>
  -  <build>
  -    <sourceDirectory/>
  -    <unitTestSourceDirectory/>
  -  </build>
  -</project>
  +
  +<project>
  +  <extend>../project.xml</extend>
  +  <pomVersion>3</pomVersion>
  +  <currentVersion>1.0</currentVersion>
  +  <name>subproject</name>
  +  <organization/>
  +  <inceptionYear/>
  +  <package/>
  +  <logo/>
  +  <shortDescription/>
  +  <siteAddress/>
  +  <siteDirectory/>
  +  <distributionSite/>
  +  <distributionDirectory/>
  +  <repository/>
  +  <mailingLists/>
  +  <developers/>
  +  <dependencies/>
  +  <build>
  +    <sourceDirectory/>
  +    <unitTestSourceDirectory/>
  +  </build>
  +</project>
  
  
  
  1.30      +10 -0     maven/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/maven/xdocs/changes.xml,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- changes.xml	21 Nov 2004 05:02:21 -0000	1.29
  +++ changes.xml	7 Dec 2004 13:18:44 -0000	1.30
  @@ -36,6 +36,16 @@
         <action dev="dion" type="add" issue="MAVEN-1382">Add license report to web site</action>
       </release>
   
  +    <release version="1.0.2" date="2004-12-07">
  +      <action dev="brett" type="fix" issue="MAVEN-1511">Allow
  +        <code>SNAPSHOT</code>as a version override
  +      </action>
  +      <action dev="brett" type="fix" issue="MAVEN-1428">Prevent "Response Content Length not known" warning</action>
  +      <action dev="brett" type="fix" issue="MAVEN-1502">Fail on 403 response to dependency download (and also anything &gt;= 400)</action>
  +      <action dev="brett" type="fix" issue="MAVEN-1507">Should now work on IBM JDK 1.3</action>
  +      <action dev="brett" type="fix" issue="MAVEN-1518" due-to="Hardy Ferentschik">Don't download a dependency if there is a JAR override for it</action>
  +      <action dev="brett" type="fix" issue="MAVEN-1501">Ensure that default properties are correctly overidden when inherited from a parent</action>
  +    </release>
       <release version="1.0.1" date="2004-11-10">
         <action dev="brett" type="fix">Ensure plugin:install correctly refreshes the cache when the plugin with the same version was previously installed</action>
         <action dev="brett" type="fix" issue="MAVEN-1471">Move dependency verification until the point where the project is in a consistent state, so that the reactor succeeds when ignoreFailures is true</action>
  
  
  
  1.27      +13 -13    maven/xdocs/start/download.xml
  
  Index: download.xml
  ===================================================================
  RCS file: /home/cvs/maven/xdocs/start/download.xml,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- download.xml	22 Nov 2004 11:59:54 -0000	1.26
  +++ download.xml	7 Dec 2004 13:18:44 -0000	1.27
  @@ -44,29 +44,29 @@
         </p>
   
         <p>
  -        The current release is 1.0.1. Below are the links to the latest release in various formats
  +        The current release is 1.0.2. Below are the links to the latest release in various formats
         </p>
         
         <ul>
           <li>
  -          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.1.exe">Windows Installer</a>
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.exe.md5">checksum</a>)
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.exe.asc">PGP</a>)
  +          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.exe">Windows Installer</a>
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.exe.md5">checksum</a>)
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.exe.asc">PGP</a>)
           </li>
           <li>
  -          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.1.tar.bz2">.tar.bz2 archive</a>
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.tar.bz2.md5">checksum</a>)
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.tar.bz2.asc">PGP</a>)
  +          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.tar.bz2">.tar.bz2 archive</a>
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.bz2.md5">checksum</a>)
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.bz2.asc">PGP</a>)
           </li>
           <li>
  -          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.1.tar.gz">.tar.gz archive</a>
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.tar.gz.md5">checksum</a>)
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.tar.gz.asc">PGP</a>)
  +          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.tar.gz">.tar.gz archive</a>
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.gz.md5">checksum</a>)
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.gz.asc">PGP</a>)
           </li>
           <li>
  -          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.1.zip">.zip archive</a>
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.zip.md5">checksum</a>)
  -          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.1.zip.asc">PGP</a>)
  +          <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.zip">.zip archive</a>
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.zip.md5">checksum</a>)
  +          (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.zip.asc">PGP</a>)
           </li>
         </ul>
       </section>
  
  
  
  1.2       +15 -7     maven/xdocs/start/release-notes-LATEST.xml
  
  Index: release-notes-LATEST.xml
  ===================================================================
  RCS file: /home/cvs/maven/xdocs/start/release-notes-LATEST.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- release-notes-LATEST.xml	22 Nov 2004 11:52:59 -0000	1.1
  +++ release-notes-LATEST.xml	7 Dec 2004 13:18:44 -0000	1.2
  @@ -20,19 +20,18 @@
   <document>
   
     <properties>
  -    <title>Maven 1.0.1 Release Notes</title>
  +    <title>Maven Release Notes</title>
       <author email="brett@apache.org">Brett Porter</author>
     </properties>
   
     <body>
  -    <section name="Maven 1.0.1 Released">
  +    <section name="Maven 1.0.2 Released">
         <p>
  -The Apache Maven team is pleased to announce the release of Maven 1.0.1.
  +The Apache Maven team is pleased to announce the release of Maven 1.0.2.
   </p><p>
   <a href="http://maven.apache.org/start/download.html">http://maven.apache.org/start/download.html</a>
   </p><p>
  -This release contains bugfixes since the Maven 1.0 release. In addition, all of the latest
  -stable plugin releases are included, which include both bugfixes and some new features.
  +This release contains further bugfixes since the Maven 1.0 release. In addition, all of the latest stable plugin releases are included, which include both bugfixes and some new features.
   </p><p>
   We recommend that all users upgrade to this release, in particular those using pre-1.0 betas or release candidates.
   </p><p>
  @@ -42,8 +41,17 @@
   object model. Maven also provides tools to create source metrics, change logs 
   based directly on source repository, and source cross-references.
   </p><p>
  -To see a list of changes to Maven, please refer to the <a href="/changes-report.html#1_0_1">Changes Report</a>
  -</p><p>
  +To see a list of changes to Maven, please refer to the <a href="/changes-report.html#1_0_2">Changes Report</a>, or the brief summary below:
  +</p>
  +<ul>
  +<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1428'>MAVEN-1428</a>] - "Response content length not known"</li>
  +<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1501'>MAVEN-1501</a>] - maven seems not to evaluate .properties of parent pom</li>
  +<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1502'>MAVEN-1502</a>] - Build doesn't fail when dependency can't be downloaded due to wrong permissions</li>
  +<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1507'>MAVEN-1507</a>] - Fails on IBM 1.3 JDK</li>
  +<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1511'>MAVEN-1511</a>] - Jar override does not work when trying to override to SNAPSHOT</li>
  +<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1518'>MAVEN-1518</a>] - Wrong behaviour for non existing overwritten dependency</li>
  +</ul>
  +<p>
   Please note that each plugin has its own changes report - please refer to the <a href="/reference/plugins/">plugins site</a> to see the plugin you are interested in.
   </p>
   <p>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Mime
View raw message